2010-09-04 34 views
0

我试图迫使包括通过CMake(2.8.2)报头和这个第一溶液:CMake的:如何强制包括多于一个的报头

SET_TARGET_PROPERTIES(${MyTarget} PROPERTIES COMPILE_FLAGS "/FI\"${ForcedHeader_A}\"/FI\"${ForcedHeader_B}\"") 

不知何故CMake的忽略(或覆盖)的第一编译器标志。只有当这两个编译器标志与这种情况下相同时,才会发生这种情况。我必须移植一些我不想在此刻修改软件结构的东西。谁能帮我 ?

感谢

回答

0

试试这个(另请注意,最近的CMake意味着你不需要USE_CAPS_ALL_THE_TIME):

get_target_property(FLAGS ${MyTarget} COMPILE_FLAGS) 
set_target_properties(${MyTarget} PROPERTIES COMPILE_FLAGS "${FLAGS} /FI\"${ForcedHeader_A}\"/FI\"${ForcedHeader_B}\"") 
+0

感谢杰克,但它应该以这种方式工作。 get_target_property(FLAGS $ {MyTarget} COMPILE_FLAGS)set_target_properties($ {MyTarget} PROPERTIES COMPILE_FLAGS“$ {FLAGS}/FI \”$ {ForcedHeader_A} \“/ FI \”$ {ForcedHeader_B} \“”) – Seroti 2010-09-11 16:48:34

+0

对不起,发送。 组(FLAG “$ {FLAGS} ”/ FI \“ $ {ForcedHeader_A} \”” “\” $ {ForcedHeader_A} \ “”) set_target_properties($ {MyTarget} PROPERTIES COMPILE_FLAGS “$ {FLAGS}”) #请注意,第二个标记前面必须没有选项/ FI,这是我猜想的CMake解析器的内部问题 – Seroti 2010-09-11 16:56:11

+0

对不起,我不明白,如果你已经完成了,你应该回答你自己的问题(回答你自己的问题没有错)然后接受答案。 – 2010-09-11 22:40:05