web-dev-qa-db-fra.com

Comment prendre en charge les deux vcxproj pour cmake sur un projet?

Je développe un projet c ++ multiplateforme. L'idée originale est de travailler avec msvc2010 et de compiler plus tard pour d'autres systèmes avec l'aide de CMake et Hudson. Il ne semble pas commode de modifier manuellement les fichiers CMake après des changements dans les paramètres du studio.

Alors, quel est le moyen le plus simple: écrire un analyseur pour vcxproj et vcxproj.filters, ou il existe une autre bonne solution?

46
tikkerey

Il peut être utile, de temps en temps, d'effectuer ce type de conversion, par exemple pour le portage. Au cours de mes voyages, j'ai trouvé ce qui suit, sans ordre particulier:

Spécifiquement pour VS vers CMake/ GYP :

  • vcproj2cmake
  • vcxproj2cmake (pas une faute de frappe!)
  • gypify.py est un générateur de fichiers .sln/solution-reading Gyp . Gyp est une alternative à Cmake, actuellement utilisé par le projet Chromium (base pour Google Chrome). Gyp affichera les fichiers de construction Makefile, Visual Studio ou XCode (voir Gyp's '-f [make | scons | msvc | xcode] 'switch). Ce script Python est très prometteur, j'espère le modifier bientôt pour spécifier correctement les dossiers contenant les en-têtes pour le paramètre d'inclusion' -I 'de gcc.

Autres outils de conversion liés à Cmake/Make:

  • Make It So Convertit les solutions Visual Studio en makefiles gcc Linux
  • sln2mak projet C #
  • sln2mak Script Perl
  • GUCEF Project inclut l'outil ProjectGenerator, pour Cmake
  • gencmake (Ruby) - Projet KDE
  • ' pbtomake ' indique qu'il peut convertir les fichiers XCode xcodeproj/pbproj en Makefiles (peut-être obsolètes)

À votre santé

Riches

49
Big Rich

Vous y revenez en arrière - configurez tous vos CMakeLists.txt et puis générez le projet MSVC à partir de celui-ci.

Cela ne devrait pas être difficile ni long. Fondamentalement, il vous suffit de dire dans quels répertoires rechercher, déclarer vos chemins d'inclusion, collecter vos * .cpps pour chaque bibliothèque avec une expression glob et déclarer vos dépendances.

Si vous devez configurer autre chose, votre projet n'est probablement pas très portable: - /

13
spraff