我使用CMake 2.8.1(也试图在CMake 2.8.5上)。我正在使用VS2008的Visual Studio生成器。我想选择性地将某些源文件的编译标志应用于不同于其他文件的编译标志,并且所有这些文件都将进入相同的静态库(将库分割为两个不同的目标不是此时的选项)。在这种情况下,我不能使用set_target_properties
,因为编译标志必须不同。但是我发现了一些很奇怪的东西以下作品(作品被定义,我看到了/flubber
选项在.vcproj文件的CMake生成AdditionalOptions
领域显示):cmake set_property SOURCE文件与COMPILE_FLAGS
set_property(SOURCE file1.cpp file2.cpp
PROPERTY COMPILE_FLAGS /flubber
)
但是,这并不工作:
set_property(SOURCE file1.cpp file2.cpp
PROPERTY COMPILE_FLAGS /GR
)
为什么CMake过滤掉或忽略/GR
选项?这是一个CMake错误还是故意的?
现在这个问题有点人为的考虑到,大约VS2005,/ GR选项被定义为默认打开(给RTTI),所以我真的不必指定它。但这不是重点,因为还有其他以“/ G”开头的标志,这些标志对于想要在一个源文件中指定,而不是另一个,并且在同一个静态库目标中是完全有效的。
这非常有帮助。标记为答案。 – bgoodr