2010-11-29 77 views

回答

4

是的,你是。構建系統應該配置代碼,而不是相反。您應該使用這種選項的配置腳本(或者可能切換到更高版本的系統:autotools,CMake,QMake ...)。

1

這是可能的,但你是以錯誤的方式去做的。包含不同目錄的方式有不同的make目標。如果您的代碼必須瞭解它們,請在您的編譯器開關中使用-D。或者,如果您的構建需要能夠在其他人的系統上運行,則需要類似autoconf這樣的方法。

4

其他答案解釋了爲什麼這是一個壞主意。然而,這樣做的一種方式是通過預處理一個makefile片段:

foo.mk.in

#ifdef FOO 
FOO_DEFINED := y 
#else 
FOO_DEFINED := n 
#endif 

Makefile

foo.mk: foo.mk.in 
    $(CPP) $(CPPFLAGS) -o [email protected] $< 
include foo.mk 
ifeq ($(FOO_DEFINED),y) 
$(warning FOO is defined) 
else 
$(warning FOO is not defined) 
endif 
+1

好工作。完成它。 – 2010-11-30 02:45:38

相關問題