我们正在使用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都有)
这有一些恼人的后果:
有没有人知道是否有办法恢复以前的自动生成CMake行为?
或者禁止这样做,至少可以减少汽车项目的视觉混乱?
答案 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)
答案 2 :(得分:3)
这是回归,应该在CMake 3.10中修复。 CMake错误报告位于:https://gitlab.kitware.com/cmake/cmake/issues/17205