Ответ 1
Это регрессия и должна быть зафиксирована в CMake 3.10. Отчет об ошибке CMake находится здесь: https://gitlab.kitware.com/cmake/cmake/issues/17205
Мы используем CMake, Qt и Visual Studio. Многие из наших проектов сконфигурированы для запуска automoc, передавая AUTOMOC ON
в add_library
.
Недавно мы обновили CMake 3.9.1, а Visual Studio теперь показывает дополнительный проект для каждой библиотеки automoc'd. Например, у нас теперь есть проект "Core" и проект "Core_autogen" в нашем решении.
(это происходит как в VS2015, так и VS2017, и как Qt 5.8, так и 5.9.1)
Это имеет несколько досадных последствий:
Кто-нибудь знает, есть ли способ восстановить предыдущее поведение CMake для автогена?
Или запрет на то, чтобы каким-то образом уменьшить визуальный беспорядок проектов автогена?
Это регрессия и должна быть зафиксирована в CMake 3.10. Отчет об ошибке CMake находится здесь: https://gitlab.kitware.com/cmake/cmake/issues/17205
В соответствии с документацией CMake v3.9 вы можете использовать AUTOGEN_BUILD_DIR для перемещения сгенерированных файлов в другую папку.
По умолчанию CMake использует <dir>/<target-name>_autogen
где:
<dir>
CMAKE_CURRENT_BINARY_DIR и<target-name>
NAME
Или из свойства AUTOMOC, которое вы можете использовать:
Глобальное свойство AUTOGEN_TARGETS_FOLDER можно использовать для группировки целей автоком вместе в среде IDE, например. в MSVS.
Глобальное свойство AUTOGEN_SOURCE_GROUP может использоваться для группировки файлов, сгенерированных AUTOMOC, вместе в среде IDE, например. в MSVS.
Надеюсь, что это поможет.
Это собирает все автогенные проекты в одной папке:
set_property(GLOBAL PROPERTY USE_FOLDERS ON)
set_property(GLOBAL PROPERTY AUTOGEN_TARGETS_FOLDER AutoMoc)