add_definitions添加了在执行cmake(not make)时修复的定义。 执行make(而不是cmake)时如何定义它们? 定义的值将是自定义命令的输出。
答案 0 :(得分:3)
答案 1 :(得分:-3)
以下是make文件的示例:
.SUFFIXES: .c.o CC = cc INCLUDE = -I/usr/include -I/usr/sys/include # Comment out one or the other, mutually exclusive CFLAGS = -g # Debugging info #CFLAGS = -O2 # Optimize code LIBS = -L/usr/lib -L/usr/sys/lib -lsome_lib1 -lsome_lib2 # Debugging libs #LIBS = -L/usr/lib # Release FILES = mysource.o myroutines1.o myroutines2.o APP = myapp .c.o: $(CC) $(INCLUDE) $(CFLAGS) -c $< all : $(APP) $(APP) : $(FILES) $(CC) -o $@ $(FILES) $(LIBS) $(CFLAGS) clobber : clean mrproper clean: rm -rf $(FILES) mrproper: rm -rf $(APP)
注意如何定义标志CFLAGS
。如果您正在进行调试或发布构建,请注释掉另一个。
以上示例适用于我的教程中的make文件,用于构建名为myapp
的可执行文件,该文件由mysource.c
,myroutines1.c
和myroutines2.c
组成。它显示 make 如何足够智能,无需重新编译即可构建可执行文件。
注意 makefile具有unix / linux方向,并且在上面的示例中没有显示的选项卡/空格上非常严格!
希望这有帮助, 最好的祝福, 汤姆。
答案 2 :(得分:-5)
我不确定我理解这个问题,但是......
也许您可以使用额外的宏来提供命令行C编译器标志,例如:
CFLAGS= <whatever>
CFLAGS2= #nothing
.c.o:
$(CC) $(INCLUDE) $(CFLAGS) $(CFLAGS2) -c $<
然后,当您发出make
命令时,请提供"CFLAGS2=xxx"
命令行参数,该参数将覆盖makefile中的默认设置。
<强>更新强>
是的,我不明白OP的问题。好心无视。