Ai đó có thể giải thích cách sử dụng các câu lệnh if-then và cho các vòng lặp trong Makefiles không? Tôi không thể tìm thấy bất kỳ tài liệu hay nào với các ví dụ.Makefile If-Then Else and Loops
Trả lời
Các hình thức có điều kiện
Simple
conditional-directive
text-if-true
endif
vừa Complex
conditional-directive
text-if-true
else
text-if-false
endif
More Complex
conditional-directive
text-if-one-is-true
else
conditional-directive
text-if-true
else
text-if-false
endif
endif
Chỉ có điều kiện
Nếu Equal Cú pháp
ifeq (arg1, arg2)
ifeq 'arg1' 'arg2'
ifeq "arg1" "arg2"
ifeq "arg1" 'arg2'
ifeq 'arg1' "arg2"
Nếu Không Equal Cú pháp
ifneq (arg1, arg2)
ifneq 'arg1' 'arg2'
ifneq "arg1" "arg2"
ifneq "arg1" 'arg2'
ifneq 'arg1' "arg2"
Nếu Defined Cú pháp
ifdef variable-name
Nếu Không Defined Cú pháp
ifndef variable-name
foreach Chức năng
foreach Function Cú pháp
$(foreach var, list, text)
foreach Semantics
Đối với mỗi khoảng trắng tách ra từ trong "danh sách", biến được đặt tên bởi "var" được thiết lập để từ đó và văn bản được thực hiện.
Bạn đã thử các GNU make documentation? Nó có một phần toàn bộ về điều kiện với các ví dụ.
Dưới đây là một ví dụ nếu:
ifeq ($(strip $(OS)),Linux)
PYTHON = /usr/bin/python
FIND = /usr/bin/find
endif
Lưu ý rằng điều này đi kèm với một lời cảnh báo rằng phiên bản khác nhau của Make có cú pháp hơi khác nhau, không ai trong số đó dường như được ghi lại rất tốt.
Là '$ (OS)' một GNU được xác định trước có tạo biến không? Nếu có, thì có thể bạn nên thêm nó vào đây (http://stackoverflow.com/q/714100/912144). – Shahbaz
Bạn thấy rất nhiều lần, nhưng thường không cần thiết. Dưới đây là ví dụ về cách người ta có thể thực hiện vòng lặp for mà không cần đến vỏ
LIST_OF_THINGS_TO_DO = do_this do_that
$(LIST_OF_THINGS_TO_DO):
run [email protected] > [email protected]
SUBDIRS = snafu fubar
$(SUBDIRS):
cd [email protected] && $(MAKE)
- 1. Killing Infinite Loops trong Java/Clojure
- 2. Tái cấu trúc cây If else else
- 3. Tại sao Python có "else" trong "for-else" và "while-else"?
- 4. Nest Loops, không thể tìm ra cách để mã này
- 5. Cần giúp đỡ với C++ Loops Tập thể dục
- 6. mysql IFNULL ELSE
- 7. Biểu thức NẾU ELSE
- 8. cấu trúc if-else
- 9. Lỗi điều kiện Makefile
- 10. C# Generics and Type Checking
- 11. Nếu else if hoặc Chuyển trường hợp
- 12. Tạo một makefile FORFAN
- 13. Animate MaxLines and Ellipsize
- 14. Chức năng trong Makefile
- 15. makefile extension
- 16. Perfect makefile
- 17. Makefile cho CUDA và C
- 18. NẾU ... ELSE trong mệnh đề WHERE MySQL
- 19. if/else vs operator ternary
- 20. Python if-else ngắn tay
- 21. Cách triển khai if-else
- 22. if-else trong Freemarker mẫu
- 23. Ngắn nếu-else django mẫu
- 24. SQL Server INLINE NẾU ELSE
- 25. Colon và $ in makefile
- 26. Makefile trên Cygwin
- 27. Thoát trong makefile
- 28. Nhận Danh mục MakeFile
- 29. Makefile: chứa chuỗi
- 30. Makefile ifeq logical hoặc
Tôi thêm "bằng ví dụ đơn giản". Ok của documenatation, nhưng con người là những ví dụ trừu tượng! Đối với tôi, đây vẫn là một câu hỏi hợp lệ. – Quickredfox