Question

Je travaille sur une open source projet C ++, pour le code qui compile sous Linux et Windows. J'utilise CMake pour construire le code sur Linux. Pour faciliter la configuration du développement et des raisons politiques, je dois en tenir aux fichiers de projet Visual Studio / éditeur sous Windows (je ne peux pas passer à code :: Blocks , par exemple). Je vois des instructions pour générer des fichiers Visual Studio en utilisant CMake, comme .

Avez-vous utilisé pour générer des fichiers CMake Visual Studio avant? Comment a été votre expérience? Supposons que je veux ajouter un nouveau fichier à mon projet. Quel est le flux de travail pour cela?

Était-ce utile?

La solution

CMake est en fait assez bon pour cela. La clé a été tout le monde du côté de Windows doit se rappeler d'exécuter CMake avant le chargement dans la solution, et tout le monde de notre côté Mac devrait se rappeler de l'exécuter avant de faire.

Le plus dur était en tant que développeur de Windows vous assurer que vos changements structurels ont été dans le fichier cmakelist.txt et non dans la solution ou les fichiers projet que ces changements seraient probablement se perdre et même si pas perdu ne se transfèrent au côté Mac qui a également besoin d'eux, et les gars Mac auraient besoin de se rappeler de ne pas modifier le fichier makefile pour les mêmes raisons.

Il faut juste un peu de réflexion et de patience, mais il y aura des erreurs au début. Mais si vous utilisez l'intégration continue des deux côtés puis ceux-ci vont se secouait tôt, et les gens éventuellement prendre l'habitude.

Autres conseils

Je ne sais pas si elle est directement liée à la question, mais je cherchais une réponse pour savoir comment générer * .sln des projets de CMake que j'ai découvert que l'on peut utiliser quelque chose comme ceci:

cmake -G "Visual Studio 10"

L'exemple VS 2010 génère des fichiers nécessaires à partir d'une entrée CMakeLists.txt fichier

Nous avons déménagé notre chaîne de construction du Ministère à CMake, et nous avons eu quelques roadbumps internes depuis d'autres départements où l'utilisation de nos fichiers de projet et où l'habitude de simplement les importer dans leurs solutions. Nous avons également eu quelques plaintes au sujet de CMake pas pleinement intégré dans le gestionnaire de projet Visual Studio / solution, les fichiers doivent être ajoutés manuellement à CMakeLists.txt; ce fut une rupture majeure dans le peuple flux de travail ont été utilisés pour.

Mais en général, ce fut une transition tout à fait lisse. Nous sommes très heureux car nous ne devons pas traiter les dossiers de projet plus.

Le flux de travail concret pour l'ajout d'un nouveau fichier à un projet est très simple:

  1. Créez le fichier, assurez-vous qu'il est au bon endroit.
  2. Ajoutez le fichier à CMakeLists.txt.
  3. Construire.

CMake 2.6 se rediffusions automatiquement si tous les fichiers CMakeLists.txt ont changé (et (semi-) automatiquement la solution recharge / projets).

Rappelez-vous que si vous faites hors de source construit, vous devez faire attention de ne pas créer le fichier source dans le répertoire de construction (depuis Visual Studio ne connaît que le répertoire de construction).

Comme le dit Alex, cela fonctionne très bien. La seule partie difficile est de se rappeler d'apporter des modifications dans les fichiers CMake, plutôt que dans Visual Studio. Donc, sur toutes les plateformes, le flux de travail est similaire à si vous aviez utilisé vieux makefiles plaine.

Mais il est assez facile de travailler avec, et je l'ai eu aucun problème avec CMake générer des fichiers invalides ou quelque chose comme ça, donc je ne vous inquiétez pas trop.

CMake peut générer très agréable Visual Studio .projs / .slns, mais il y a toujours le problème avec la nécessité de modifier les fichiers .cmake plutôt que .proj / .sln. Comme il est maintenant, nous traitons comme suit:

  1. Tous les fichiers sources vont /src et fichiers visibles dans Visual Studio ne sont que des « liens » à leur définis dans .filter.
  2. programmeur ajoute / supprime les fichiers ne pas oublier de travailler sur le répertoire /src défini, pas l'un du projet par défaut.
  3. Quand il est fait, il exécuter un script qui « rafraîchit » les fichiers .cmake respectifs.
  4. Il vérifie si le code peut être construit dans l'environnement recréée.
  5. Il engage le code.

Au début, nous étions un peu peur de la façon dont il va tourner, mais le flux de travail fonctionne vraiment bien et avec une belle diff visible avant chaque validation, tout le monde peut facilement voir si ses modifications ont été correctement mises en correspondance dans les fichiers .cmake.

Une chose importante à savoir est le manque de soutien ( afaik ) pour "Solution Configurations" dans CMake. En l'état actuel, vous devez générer deux répertoires avec des projets / solutions - un pour chaque type de construction (debug, version, etc.). Il n'y a pas un soutien direct à des fonctionnalités plus sophistiquées - en d'autres termes:. Commutation entre les configurations ne vous donnera pas ce que vous pourriez attendre

J'ai commencé mon propre projet, appelé syncProj. Documentation / liens de téléchargement d'ici:

https://docs.google.com/document/d/1C1YrbFUVpTBXajbtrC62aXru2om6dy5rClyknBj5zHU/ modifier # https://sourceforge.net/projects/syncproj/

Si vous avez l'intention d'utiliser Visual Studio pour le développement, et actuellement que C ++ est pris en charge.

L'avantage principal par rapport aux autres systèmes de faire est que vous pouvez réellement déboguer votre script, comme il est C # base.

Si vous n'êtes pas familier avec syncProj, vous pouvez simplement convertir votre solution / projet .cs script et continuer développement de ce moment-là.

Dans CMake vous devez écrire tout à partir de zéro.

Beaucoup de grandes réponses ici, mais ils pourraient être supplantés par cette support CMake dans Visual studio (5 octobre 2016)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top