如何检查Makefile中c文件中定义的宏?

时间:2016-10-31 10:38:42

标签: makefile

我在c文件中有一个#define ONB(有几个#ifndef...#endif s)改变了程序行为的许多方面。现在我想更改项目makefile(甚至更好的Makefile.am),这样如果定义了ONB并相应地设置了其他一些选项,它就会运行一些特殊命令。

我搜索了网页,但我找到的只是检查环境变量......那么有没有办法做到这一点?或者我必须更改c代码以在环境变量中检查它?(我不想更改代码,因为它是一个非常大的项目,我不知道它的一切)

1 个答案:

答案 0 :(得分:0)

问题:我的评价不足以在评论中提问,所以我不得不在这里问:

  • 首先如何以及何时将定义添加到目标?
  • 您是否真的想要一种方法能够发布编译查询二进制文件以确定是否使用了特定的定义?
  • 如果您能给出一个具体的例子,即您想要运行的特殊命令是什么,以及涉及的.c .h文件是什么,将会有所帮助?

可能的解决方案:根据您的需要,您可以使用LLVM工具生成并检查代码的AST,以查看是否使用了定义。但这似乎有点像工程学。

可能的解决方案:您还可以使用#includes来引入.c或头文件并生成条件错误,或者编译(转换为.o),然后编译失败你知道它是否已定义。但这有其自身的问题,具体取决于make文件中的设置方式。