Tôi đang viết một Makefile với rất nhiều công cụ lặp đi lặp lại, ví dụ:Chức năng trong Makefile
debug_ifort_Linux:
if [ $(UNAME) = Linux ]; then \
$(MAKE) FC=ifort FFLAGS=$(difort) PETSC_FFLAGS="..." \
[email protected] LEXT="ifort_$(UNAME)" -e syst; \
else \
echo $(err_arch); \
exit 1; \
fi
nơi mục tiêu 'Syst' được định nghĩa, biến 'uname' được định nghĩa (và thường là Linux, nhưng có thể cũng bởi Cygwin hay OSF1) và các biến 'difort' và 'err_arch' cũng được xác định . Khối mã này được sử dụng rất nhiều lần cho các mục tiêu trình biên dịch khác nhau (sử dụng quy ước tên là ''). Vì đây là một lượng lớn mã dự phòng, tôi muốn có thể viết nó một cách đơn giản hơn. Ví dụ: tôi muốn thực hiện một việc như sau:
debug_ifort_Linux:
compile(uname,compiler,flags,petsc_flags,target,lext)
nơi biên dịch có thể là một hàm làm mã ở trên dựa trên các đối số. Có ai có bất kỳ ý tưởng làm thế nào tôi có thể thực hiện điều này?
Tại sao điều này tốt hơn câu trả lời trước đó hiện được đánh dấu là chính xác? –
Bạn nên sử dụng các biến nhiều dòng, thay vì \. Mà một lần nữa sẽ là "quá nhiều để chỉ cần chỉnh sửa câu trả lời đó" (như xa như tôi nhận được đánh giá cho đến nay) – JonnyJD
Và giải thích các biến multiline là một chút quá nhiều cho một bình luận. Nhưng tất nhiên bạn không phải đồng ý. – JonnyJD