我想用-Wconversion -Werror编译大部分代码。如何从g ++编译器选项中排除文件
问题是我使用的是一个开源的.cpp文件,不应该修改,编译它与那些标志失败,因为该特定的.cpp文件有一些“隐式转换可能会改变值” 。
我可以通过-Wconversion -Werror指令构建编译所有其他文件,但是编译没有这些标记的文件?
我想用-Wconversion -Werror编译大部分代码。如何从g ++编译器选项中排除文件
问题是我使用的是一个开源的.cpp文件,不应该修改,编译它与那些标志失败,因为该特定的.cpp文件有一些“隐式转换可能会改变值” 。
我可以通过-Wconversion -Werror指令构建编译所有其他文件,但是编译没有这些标记的文件?
make
实用程序提供了一套丰富的工具来定制构建和默认为常规逻辑的隐式过程。如果有与gcc工具链相关的问题,GNU make
tutorial是一个很好的起点。
基本上,一个makefile包含用于构建项目的自定义逻辑。规则由表观目标从依赖性一个冒号在一行分开的,然后(可能是零或许多)食谱由制表符缩进解释在构建目标步骤后续行。虚假目标,例如。为了便于维护项目,也可以定义为clean
。
如果有特定于目标的规则,则优先使用该规则来优先于任何隐式规则来构建该目标。 OP可能只需要将特定于目标的规则添加到现有的makefile中,该makefile将管理编译器选项的使用(从源构建对象)。
唯一的缺点是GNU Make令人讨厌的错误。例如,在我的一个项目中,我得到了“警告:重写目标'单元测试/测试-a-main.cpp'的配方”,但这不是一个表演阻止者。 – 2013-02-15 22:46:18
当然'make'可以被告知使用不同的选项来将源代码编译成目标文件,然后将目标文件链接到一个可执行文件中,尽可能多地满足你所要求的规范。你正在寻找一个例子,或针对你的情况量身定制的方法? – hardmath 2013-02-15 16:37:33
虽然我正在撰写自己的想法,但以下是关于'make'的GNU教程(http://www.gnu.org/software/make/manual/make.html#Introduction)以供将来参考。 – hardmath 2013-02-15 16:45:28
上述链接教程中的“简单makefile”避免了任何用于生成目标文件的“常规”规则,并为每个此类文件阐述了编译器“配方”。所以简短的答案是对特殊源文件有一个特殊的规则,然后是其他所有通配符驱动的配方。 – hardmath 2013-02-15 16:50:43