2016-09-07 27 views
5

Tôi muốn xác định macro C bằng cách chuyển nó làm đối số cho make, được gọi từ dòng lệnh.Làm thế nào một định nghĩa macro có thể được chuyển như một đối số để thực hiện?

Thông tin cơ bản: Tôi muốn chỉ thị #define ENABLE_OPT 1 được bao gồm trong mã nguồn C của tôi khi tùy chọn xây dựng nhất định được chọn. Vì vậy, tôi muốn điều này được thực hiện thông qua dòng lệnh make thay vì sửa đổi mã nguồn hoặc makefile.

Làm cách nào để đạt được điều này? Tôi thấy rằng make -DENABLE_OPT=1 -f Makefile ném lỗi mà 'E', 'N' vv là các đối số không hợp lệ để thực hiện.

+2

tạo CFLAGS = "- DENABLE_OPT = 1" – Serge

+1

Câu hỏi liên quan http://stackoverflow.com/questions/9052792/how-to-pass-macro-definition-from-make-command-line-arguments-d-to -c-source –

+0

Cảm ơn bạn. Tôi chỉ có LOCAL_CFLAGS được định nghĩa trong makefile, do đó, điều này sẽ không ghi đè bất cứ điều gì. Nghe hay đấy! –

Trả lời

4

Bạn có thể sử dụng --eval, mà sẽ đánh giá chuỗi như một tuyên bố makefile:

make --eval="FLAGS+= -D ENABLE_OPT=1" 

Các làm FLAGS biến sau đó được sử dụng như là một đối số trình biên dịch để biên dịch mã.

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