2012-03-27 60 views
1

我看到以前的SO帖子1,2等我想在編譯時傳遞預處理器指令。隨着scons,我可以這樣做:makefile:將預處理器通過makefile傳遞給g ++

num_times = ARGUMENTS.get('c', 1) 
env.Append(CCFLAGS = '-DNUM_TIMES=%d' % int(num_times)) 

我希望,也應該可以使用make。我想發行

make c=4 

或類似的東西。有人可以提出一種方法。我正在編譯一個文件夾,其中包含具有自己的makefile的子文件夾。提前致謝。

回答

1

一個簡單的方法是做:

CFLAGS += -DNUM_TIMES=$(c) 
export CFLAGS 

all: 
    $(MAKE) -C your_subfolder 

電話與make c=2,而不是在子文件夾中生成文件觸摸CFLAGS

另一種方法是在您的根文件夾中有一個Makefile部分,其中包含include子目錄makefile中的所有常用設置(使用include)。 ($(MAKE)確保您給make的命令行參數也將傳遞給子製造商。)

+0

謝謝。是否可以,如果子生成文件是這樣的話:CFLAGS + = $(CXXFLAGS) – user984260 2012-03-27 19:57:13

+0

只要確保在主生成文件和子文件中不要執行相同的操作,並且同時在主文件中導出 - 會讓你的變量增加一倍,這可能是有問題的。最好的(可能)不是「導出」,但有一個通用的片段,你可以隨處添加你想要的設置。 – Mat 2012-03-27 20:01:48