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

Ale*_*erg 17 qt cmake visual-studio-2015 visual-studio-2017

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

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

(这种情况发生在VS2015和VS2017,以及Qt 5.8和5.9.1)

这有一些恼人的后果:

  • 项目数量增加了近一倍,增加了大量的视觉混乱.
  • 通过UI构建单个项目时,Automoc不再运行,在调试特定项目的构建问题时可能会导致细微的错误.

有没有人知道是否有办法恢复autogen以前的CMake行为?

或者除此之外,某种方式至少可以减少汽车项目的视觉混乱?

小智 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中.

希望这可以帮助.


Ver*_*ahn 6

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

set_property(GLOBAL PROPERTY USE_FOLDERS ON)
set_property(GLOBAL PROPERTY AUTOGEN_TARGETS_FOLDER AutoMoc)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述


小智 4

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