【发布时间】:2009-12-11 21:48:13
【问题描述】:
add_definitions 添加在执行 cmake(不是 make)时固定的定义。 执行make(不是cmake)时如何定义它们? 定义的值将是自定义命令的输出。
【问题讨论】:
标签: build-process makefile cmake
add_definitions 添加在执行 cmake(不是 make)时固定的定义。 执行make(不是cmake)时如何定义它们? 定义的值将是自定义命令的输出。
【问题讨论】:
标签: build-process makefile cmake
【讨论】:
这是一个make文件的例子:
.后缀:.c.o 抄送 = 抄送 包含 = -I/usr/include -I/usr/sys/include # 注释掉一个或另一个,互斥 CFLAGS = -g # 调试信息 #CFLAGS = -O2 #优化代码 LIBS = -L/usr/lib -L/usr/sys/lib -lsome_lib1 -lsome_lib2 # 调试库 #LIBS = -L/usr/lib # 释放 文件 = mysource.o myroutines1.o myroutines2.o 应用程序 = 我的应用程序 .co: $(CC) $(包括) $(CFLAGS) -c $注意标志CFLAGS 是如何定义的。注释掉另一个取决于您是在进行调试还是发布构建..
上面的示例是我的教程中的一个 make 文件,用于构建一个名为 myapp 的可执行文件,它由 mysource.c、myroutines1.c 和 myroutines2.c 组成。它还展示了 make 如何足够智能地构建可执行文件而无需重新编译。
注意 makefile 具有 unix/linux 方向,对上面示例中未显示的制表符/空格非常严格!
希望这会有所帮助, 最好的祝福, 汤姆。
【讨论】:
我不确定我是否理解这个问题,但是...
也许您可以使用额外的宏来提供命令行 C 编译器标志,例如:
CFLAGS= <whatever>
CFLAGS2= #nothing
.c.o:
$(CC) $(INCLUDE) $(CFLAGS) $(CFLAGS2) -c $<
然后当您发出make 命令时,提供"CFLAGS2=xxx" 命令行参数,它会覆盖makefile 中的默认设置。
更新
是的,我不明白 OP 的问题。所以请无视。
【讨论】: