【发布时间】:2018-06-19 09:13:20
【问题描述】:
我想将 C 源代码 #define“链接”到 makefile 变量 - 以便能够通过 make 定义或取消定义。
例如,
// my C source file
#ifdef SOMETHING
// do something
#else
// do something else
#endif
然后SOMETHING 将从make 命令行触发:
make something=true
这适用于我的makefile:
ifeq ($(something),true)
COMPILER_FLAGS += -DSOMETHING
endif
我在徘徊,这是正确的方法吗?
有没有更简单或更好的解决方案?
【问题讨论】:
-
是的,对于这类事情,这是一个很常见的成语。您是否面临任何特殊问题?
-
谢谢。没有任何问题。只是想确保这是正确的方式,因为在 #define 之后,我似乎必须再添加一些...
-
这很常见,但有一个令人不快的警告:如果您正在调试(或生成自动报告,例如为软件进程检查点生成报告),那么您需要以某种方式从临时命令行传输定义的宏到某种稳定的存储形式,这意味着在构建过程中将控制台输出记录到某个文件中,该文件成为发布的一部分。由于它不是源代码的一部分,即使是智能调试器也经常无法弄清楚定义。您必须确定简单的节拍在您的情况下是否稳定。
-
请注意,现在所有酷孩子似乎都在使用更高级别的构建系统,例如 CMake - 我想这可能会使管理构建变体比直接在 makefile 上运行的临时解决方案容易得多。跨度>
标签: makefile