2015-09-08 12 views
1

У меня есть проект CMake. Это кроссплатформенный проект, разработанный группой разработчиков. Visual Studio и другие файлы make находятся внутри контроля версий для выпуска библиотеки и внешних разработчиков. Каждый раз, когда файл добавляется, нам нужно перекомпилировать все файлы prject для всех платформ. Как заставить CMake генерировать новые файлы проекта для всех систем сразу (если возможно изнутри CMakeLists, а не как аргументы командной строки)?Можно ли заставить проект CMake генерировать проект Visual Studio при создании другого типа проекта?

+0

Каждая версия визуальной студии генерирует другую версию файла проекта. VS6 был dsp, VS7 - VS9 vcproj - все разные, VS10 - VS13 vcxproj - все разные. Если вы попытаетесь идти в ногу с разными версиями визуальной студии, вы будете там навсегда. Кроме того, вы должны учитывать, 32-бит/64 бит, unicode/mbcs. – cup

+0

Я также не рекомендовал бы это, но так как вы просите * force * CMake сделать это: исходя из предположения, что используемые генераторы и соответствующие каталоги двоичных выходных данных известны, вы можете сделать, например. 'if (FORCE_CMAKE)' 'unset (FORCE_CMAKE CACHE)' 'else()' 'if (NOT" $ {CMAKE_GENERATOR} "STREQUAL" Visual Studio 9 2008 ")' 'execute_process (COMMAND $ {CMAKE_COMMAND} -DFORCE_CMAKE = 1 - H "$ {CMAKE_SOURCE_DIR}" -B "MyBuildVS2008Dir" -G "Visual Studio 9 2008") '' endif() '...' endif() '. Просто заполните список, и каждый раз при повторной настройке он также проверяет остальные. – Florian

ответ

0

Я думаю, что это не имеет смысла, поскольку это возможно в CMakeLists. CMake - генератор makefile. Все в cmakelists настраивает make-файл, и его также можно перенастроить для создания файлов проекта. Если cmakelists могут также запросить создать другой вид makefile ... он будет отличаться от любой другой команды в cmakelists тем, что он не описывает текущий выбранный make-файл.

Если бы я был вами, я бы просто сделал сценарий оболочки или простой make-файл отдельно от CMake, который перестраивает каждый из файлов проекта, вызывая cmake из командной строки с соответствующими параметрами.

0

Является ли цель версий сценариев сборки CMake, чтобы заставить разработчиков не устанавливать CMake?

В любом случае: лучше всего использовать правильный инструмент для правильной работы. CMake предназначен для создания файлов сборки и небольших скриптов, необходимых для этого. Используйте среду сценариев (bash, cmd.exe), чтобы запустить CMake по мере необходимости для всех ваших платформ.

Это сохраняет файлы CMake в чистоте (и читается, сценарии CMake трудно читаются) и обеспечивает чистое разделение проблем.

 Смежные вопросы

  • Нет связанных вопросов^_^