2012-05-22 36 views
10

makefile của tôi có dòng như saugiá trị mặc định xác định trong makefile

CFLAGS = -c -g -D OPT1 -D OPT2 

Tôi muốn vượt qua đối số này thông qua dòng lệnh như thế này

make ARG1= OPT1 ARG2 =OPT2  

Nếu tôi không vượt qua những lập luận này thông qua dòng lệnh Tôi muốn makefile để sử dụng lấy các giá trị mặc định được định nghĩa trong makefile. Làm thế nào để làm điều đó ?

+1

bản sao có thể có của [Truyền các biến bổ sung từ dòng lệnh để thực hiện] (http://stackoverflow.com/questions/2826029/passing-additional-variables-from-command-line-to-make) –

Trả lời

18

Chỉ cần làm một cái gì đó như thế này trong makefile:

OPT1 = MY_OPT_1 # defaults 
OPT2 = MY_OPT_2 

CFLAGS = -c -g -D $(OPT1) -D $(OPT2) 

Sau đó trên dòng lệnh:

$ make -e OPT1=SOME_OTHER_OPT1 OPT2=SOME_OTHER_OPT2 

Khi bạn xác định falues ​​cho OPT1 và/hoặc OPT2 trên dòng lệnh này sẽ ghi đè các giá trị mặc định trong makefile.

Lưu ý rằng bạn có thể muốn tùy chọn -e với make trong hầu hết các trường hợp để buộc mọi thứ phải được xây dựng lại với các giá trị OPT1, OPT2 mới.

+0

cảm ơn nếu tôi muốn OPT2 được null theo mặc định? – user1377944

+0

Tricky, bởi vì bạn không thể có một '-D' không có gì sau nó. –

+0

Sử dụng #ifdef OPT2 #endif trong tệp c/cpp của bạn –

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