53 votes

Comment supporter à la fois vcxproj et cmake sur un projet ?

Je suis en train de développer un projet c++ multiplateforme. L'idée originale est de travailler avec msvc2010 et plus tard de compiler pour d'autres systèmes avec l'aide de CMake et Hudson. Il ne semble pas pratique 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 parseur pour vcxproj et vcxproj.filters, ou y a-t-il une autre bonne solution ?

57voto

Big Rich Points 1833

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é les éléments suivants, sans ordre particulier :

Spécifiquement pour VS à CMake/ GYP :

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

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

  • Faites-le donc Convertit les solutions Visual Studio en makefiles Linux gcc
  • sln2mak Projet C#
  • sln2mak Perl script
  • Projet GUCEF comprend l'outil ProjectGenerator, pour Cmake
  • gencmake (ruby) - Projet KDE
  • ' pbtomake ' dit qu'il peut convertir les fichiers XCode xcodeproj/pbproj en Makefiles (peut-être dépassé)

Cheers

Rich

0 votes

Gypify n'a pas fonctionné pour moi ... il a créé un fichier .gyp qui ne contient aucun fichier source.

0 votes

Aviad Rozenhek, brièvement, j'ai utilisé 'gypify.py --sln=<path-to-vs20xx-solution-files>' puis j'ai créé mon fichier de construction à partir de Gyp via 'gyp ./converted-vs20xx-sln.gyp --toplevel-dir=/path/to/project/Root/ --depth=. -f [make|ou|autre|build] --generator-output=./<makeoutdir>'. J'espère que cela vous aidera.

0 votes

Gyp supporte-t-il vraiment Scons ? C'est fou.

14voto

spraff Points 10492

Vous y allez à l'envers -- mettez en place toutes vos CMakeLists.txt et puis générer le projet MSVC à partir de celui-ci.

Cela ne devrait pas être difficile ni prendre beaucoup de temps. En gros, il vous suffit de dire dans quels répertoires chercher, de déclarer vos chemins d'inclusion, de rassembler vos *.cpp pour chaque bibliothèque avec une expression globale, et de déclarer vos dépendances.

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

1 votes

Je connais cette option, mais l'idée était de remplacer l'édition manuelle des fichiers CMake par des options bien connues en studio.

0 votes

Pouvez-vous être plus précis sur les paramètres/options que vous modifiez ?

15 votes

Le point est que les projets MSBuild et les solutions VS générés par cmake sont inutilisables, si votre outil principal et primaire est Visual Studio, c'est-à-dire si vous créez et configurez des projets, des solutions et des dépendances en utilisant VS en premier. Si vous voulez supporter plusieurs plateformes/environnements de construction, le seul choix semble être d'abandonner le confort de VS et de plonger dans la maintenance manuelle de nombreux fichiers texte en permanence. Un outil qui fait cette "génération inverse" serait en effet inestimable...

4voto

Pavel Liavonau Points 31

Le meilleur outil pour cet objectif est cmake-converter

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X