2011-06-29 36 views
7

Tôi đang cố xác định các biến trong một tệp Makefile, theo các điều kiện. Vì ifeq chỉ có thể chạy trong các quy tắc, tôi đã thêm một quy tắc bổ sung (def_rule) mà tôi tham chiếu cho mỗi quy tắc.Biến điều kiện xác định trong Makefile với ifeq

Ví dụ:

def_rule: 
ifeq ($(TARGET), android) 
    CC=arm-linux-androideabi-gcc 
else 
    echo "native build" 
endf 

all: def_rule tp xi_eid_chipset.o 

Thật không may, gọi làm cho tất cả lợi nhuận này:

ifeq (linux, android)
/bin/sh: Syntax error: word unexpected (expecting ")")
make: *** [def_rule] Error 2

Tôi không thể hiểu tại sao. Tôi vừa làm theo các ví dụ trong tài liệu GNU Make.

Bạn có biết cách định nghĩa có điều kiện trong Makefiles không?

Trả lời

9

Conditionals có thể bên ngoài các quy tắc:

ifeq ($(TARGET), android) 
$(info Android) 
CC=arm-linux-androideabi-gcc 
else 
$(info native build) 
CC=something else 
endif 

(Lưu ý rằng tôi đã ném trong một vài không gian hàng đầu, chỉ để làm cho nó dễ dàng hơn để read-- họ không phải là cần thiết và cũng không có hại.)

Các vấn đề liên quan