Как поддержать оба vcxproj для создания проекта? - PullRequest
46 голосов
/ 11 июля 2011

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

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

Ответы [ 2 ]

49 голосов
/ 22 февраля 2012

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

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

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

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

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

Приветствия * * тысяча пятьдесят-один

Rich

13 голосов
/ 11 июля 2011

Вы идете в обратном направлении - настройте все свои CMakeLists.txt и , затем создайте из него проект MSVC.

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

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

...