小编ogb*_*119的帖子

Makefile 触发 C/C++ 预处理器指令的重建

假设我有一个 C++ 源文件,如下所示:

int main() {
...
#ifdef flag
    // do something
#endif
...
#ifndef flag
    // do something different
#endif
...
}
Run Code Online (Sandbox Code Playgroud)

我知道对于 gcc,我可以用作-D'flag'预处理器的指令来定义flag,从而确定上面代码的哪一部分实际被编译,并且这可以在 Makefile 中使用。

但是我如何编写一个 Makefile,以便根据我是否想要flag定义来重新构建源文件(不对任何文件进行其他更改,包括 Makefile 本身)?

例如,我知道我可以(如果有更好的方法,解决方案不需要遵循这个!),当我运行 make eg with 时定义一个变量make flag=1 all,但是如果文件包含main(与上面的源代码示例一致)此后一直没有更改。

即从一个干净的目录开始并运行make all将运行构建,但是如果我立即运行,make flag=1 all我希望包含main(例如main.cpp)的文件能够正确重建,而不必touch main.cpp首先。

c++ gcc makefile gnu-make preprocessor-directive

1
推荐指数
1
解决办法
690
查看次数

标签 统计

c++ ×1

gcc ×1

gnu-make ×1

makefile ×1

preprocessor-directive ×1