make依赖项:使用gcc跳过供应商和程序包头吗?

问题描述 投票:0回答:1

[我正在开始一个新项目,并考虑使用gcc 6.3.1 -MM将依赖项生成到名为Make.Dep的文件中,该文件将包含在Makefile中。

-M选项输出all标头,包括系统标头。 -MM选项不会输出系统标头,但是我仍然被字面上数以千计的供应商和程序包标头埋藏,例如Sybase和Boost,我认为它们不会改变(如果这样做,我很乐意必须手动进行完全重建)。

显然,我可以将gcc -MM包装在perl脚本中,或者您知道我认为要打包的目录是什么,但是有没有更广泛接受的解决方案?

请注意,我的供应商标题之一是寻找特定的gcc定义的预处理器符号来配置其可移植性。我宁愿不手动设计一组此类符号,以允许使用某些非gcc方法(例如makedepend)来生成依赖项。

gcc c-preprocessor gnu-make dependency-management gcc6
1个回答
0
投票

代替-I,使用-isystem声明您不希望通过-MM输出的目录。

https://gcc.gnu.org/onlinedocs/gcc/Preprocessor-Options.html似乎与-M-MM选项紧密相关,但目前尚未提及。

示例:这将创建foo.cpp和bar.cpp的正确依赖性,包括 Sybase标头:

gcc -MM -I/opt/nmr/sap/sybaseASE/sybclient-16.0.3-7/OCS-16_0/include foo.cpp bar.cpp

示例:这样做相同,但是不包括 Sybase标头:

gcc -MM -isystem /opt/nmr/sap/sybaseASE/sybclient-16.0.3-7/OCS-16_0/include foo.cpp bar.cpp
© www.soinside.com 2019 - 2024. All rights reserved.