Как поддерживать оба vcxproj для cmake в проекте?

Я разрабатываю кроссплатформенный проект С++. Первоначальная идея заключалась в том, чтобы работать с msvc2010, а затем компилировать для других систем с помощью CMake и Hudson. Не очень удобно вручную менять файлы CMake после изменения настроек студии.

Итак, что проще: написать парсер для vcxproj и vcxproj.filters, или есть другое хорошее решение?


person tikkerey    schedule 11.07.2011    source источник


Ответы (3)


Время от времени может быть полезно выполнять этот тип преобразования, например, для переноса. В своих путешествиях я нашел следующее, в произвольном порядке:

Специально для VS для CMake/GYP:

  • vcproj2cmake
  • vcxproj2cmake (не опечатка!)
  • gypify.py — это .sln/solution-reading Gyp генератор файлов. Gyp — это альтернатива Cmake, которая в настоящее время используется в проекте Chromium (основа для браузера Google Chrome). Gyp будет выводить файлы сборки Makefile, Visual Studio или XCode (см. переключатель Gyp '-f [make|scons|msvc|xcode]'). Этот Python-скрипт весьма многообещающий, я надеюсь вскоре изменить его, чтобы правильно указать папки, содержащие заголовки, для параметра включения gcc '-I'.

Другие инструменты преобразования, связанные с Cmake/Make:

  • Сделайте так Преобразует решения Visual Studio в make-файлы Linux gcc.
  • sln2mak проект C#
  • sln2mak Perl-скрипт
  • Проект GUCEF включает инструмент ProjectGenerator для Cmake
  • gencmake (ruby) – проект KDE
  • 'pbtomake' говорит, что может преобразовывать файлы XCode xcodeproj/pbproj в Makefiles (возможно, устаревшие)

Ваше здоровье

Богатый

person Big Rich    schedule 22.02.2012
comment
gypify у меня не работал ... он создал файлы .gyp, в которых нет исходных файлов - person Aviad Rozenhek; 22.05.2012
comment
@ Aviad Rozenhek, вкратце, я использовал 'gypify.py --sln=‹path-to-vs20xx-solution-files›', а затем создал файл сборки из Gyp через 'gyp ./converted-vs20xx-sln.gyp -- toplevel-dir=/path/to/project/root/ --depth=. -f [сделать|или|другое|сборка] --generator-output=./‹makeoutdir›'. Надеюсь, это поможет. - person Big Rich; 14.06.2012
comment
Gyp действительно поддерживает Scons? Это дико. - person JonnyRo; 27.06.2013
comment
В настоящее время я разрабатываю скрипт для проекта cpp: cmakeconverter, если вам интересно. Он преобразует .vcxproj в CMakeLists.txt. - person Algorys; 01.06.2016

Вы подходите к этому задом наперед — настройте весь свой CMakeLists.txt и затем сгенерируйте из него проект MSVC.

Это не должно быть сложно или отнимать много времени. По сути, вам просто нужно сказать, какие каталоги искать, объявить свои пути включения, собрать свои *.cpps для каждой библиотеки с выражением glob и объявить свои зависимости.

Если вам нужно настроить что-то еще, то ваш проект, вероятно, не очень переносим: -/

person spraff    schedule 11.07.2011
comment
Я знаю об этом варианте, но идея заключалась в том, чтобы заменить ручную версию файлов CMake на известные оптиноны в студии. - person tikkerey; 11.07.2011
comment
Можете ли вы более конкретно указать, какие настройки/параметры вы меняете? - person spraff; 11.07.2011
comment
Дело в том, что сгенерированные cmake проекты MSBuild и VS Solutions непригодны для использования, если вашим основным и основным инструментом является Visual Studio, т.е. если вы сначала создаете и настраиваете проекты, решения и зависимости, используя VS. Если вы хотите поддерживать несколько платформ/сред сборки, единственный выбор, по-видимому, состоит в том, чтобы отказаться от комфорта VS и погрузиться в постоянное ручное обслуживание большого количества текстовых файлов. Инструмент, который выполняет эту обратную генерацию, был бы действительно бесценным... - person Paul Michalik; 17.11.2012
comment
Согласитесь, весь смысл CMake заключается в том, чтобы указать проект как независимый от системы сборки список библиотек, программ, пользовательских шагов сборки... Затем cmake выводит для вас проект, зависящий от системы сборки, по запросу. Я думаю, что инструменты преобразования, упомянутые выше, хороши, но только если вы выполняете первоначальное (и однократное) преобразование устаревшего проекта Visual Studio в CMake, и даже тогда я все равно отредактировал бы его вручную. - person JonnyRo; 27.06.2013
comment
Для всего, кроме небольшого проекта, воссоздание всей этой логики сборки вручную из проекта VS будет утомительным и повторяющимся. Утомительные и повторяющиеся вещи должен делать компьютер. Когда их делает человек, это становится подверженным ошибкам. - person legalize; 28.04.2015
comment
Если вы стремитесь стать кроссплатформенным, вам нужно сделать это с самого начала, иначе у вас возникнут подобные головные боли. - person spraff; 02.05.2015
comment
Иногда, со сторонними библиотеками, у вас не так много выбора, если вы хотите взяться за дело.... - person UKMonkey; 07.12.2016

Лучшим инструментом для этой цели является cmake-converter.

person Pavel Liavonau    schedule 14.02.2020