CMake 3.9现在在Visual Studio中创建“autogen”项目?

时间:2017-08-18 19:45:28

标签: qt visual-studio-2015 cmake visual-studio-2017

我们正在使用CMake,Qt和Visual Studio。我们的许多项目都配置为通过将AUTOMOC ON传递给add_library来运行automoc。

我们最近更新了CMake 3.9.1,Visual Studio现在为每个automoc库提供了一个额外的项目。例如,我们现在在我们的解决方案中有一个“核心”项目和一个“Core_autogen”项目。

(这在VS2015和VS2017以及Qt 5.8和5.9.1都有)

这有一些恼人的后果:

  • 项目数量几乎翻了一番,增加了很多视觉混乱。
  • 通过UI构建单个项目时,Automoc不再运行,这可能会在调试特定项目的构建问题时导致细微的错误。

有没有人知道是否有办法恢复以前的自动生成CMake行为?

或者禁止这样做,至少可以减少汽车项目的视觉混乱?

3 个答案:

答案 0 :(得分:7)

根据CMake v3.9文档,您可以使用AUTOGEN_BUILD_DIR将生成的文件移动到其他文件夹。

默认情况下,CMake使用<dir>/<target-name>_autogen其中:

  

<dir>CMAKE_CURRENT_BINARY_DIR<target-name>NAME

或者您可以使用AUTOMOC属性:

  

全局属性AUTOGEN_TARGETS_FOLDER可用于在IDE中将automoc目标组合在一起,例如在MSVS。

     

全局属性AUTOGEN_SOURCE_GROUP可用于将AUTOMOC生成的文件一起分组到IDE中,例如:在MSVS。

希望这有帮助。

答案 1 :(得分:6)

这会收集一个文件夹中的所有autogen项目:

set_property(GLOBAL PROPERTY USE_FOLDERS ON)
set_property(GLOBAL PROPERTY AUTOGEN_TARGETS_FOLDER AutoMoc)

enter image description here

答案 2 :(得分:3)

这是回归,应该在CMake 3.10中修复。 CMake错误报告位于:https://gitlab.kitware.com/cmake/cmake/issues/17205