Подтвердить что ты не робот

CMake 3.9 теперь создает "автогенные" проекты в Visual Studio?

Мы используем 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)

Это имеет несколько досадных последствий:

  • Почти удвоить количество проектов, добавив много визуального беспорядка.
  • Automoc больше не работает при создании отдельного проекта через пользовательский интерфейс, что может привести к тонким ошибкам при отладке проблем сборки для конкретного проекта.

Кто-нибудь знает, есть ли способ восстановить предыдущее поведение CMake для автогена?

Или запрет на то, чтобы каким-то образом уменьшить визуальный беспорядок проектов автогена?

4b9b3361

Ответ 2

В соответствии с документацией 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.

Надеюсь, что это поможет.

Ответ 3

Это собирает все автогенные проекты в одной папке:

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

введите описание изображения здесь