Question

Comment portez-vous les programmes C ++ avec le makefile créé à partir de GNU C ++ sous Linux vers Visual C ++?

Était-ce utile?

La solution

Une chose que je peux suggérer est d’utiliser CMake. Si vous implémentez votre système de compilation avec CMake pour générer automatiquement les fichiers makefiles pour GCC sous Linux, il ne faut que des modifications mineures pour générer automatiquement des projets et des solutions pour VC ++.

Bien sûr, cela signifie qu’il faut apprendre un tout nouvel outil de compilation, de sorte que ce ne sera peut-être pas pour vous. Ce n'est qu'une suggestion.

Autres conseils

Je ne connais pas de solution simple pour convertir simplement l'un de l'autre, mais ..

En supposant que vous utilisez uniquement les fonctionnalités ANSI C / C ++, vous n'avez généralement pas besoin de convertir le fichier makefile; il suffit de regarder quels fichiers .c / .cpp sont dedans et de les ajouter au projet VS; vous devrez également vérifier les options du compilateur et les macros définies pour les insérer dans le projet VS. J'ai fait cela pour compiler des bibliothèques comme expat, freetype, agg et autres, sans problèmes.

Portage du système de construction: vous pouvez utiliser un port Windows de GNU make et modifier le fichier makefile pour appeler les outils de ligne de commande Visual C ++ ( cl.exe , < code> link.exe , lib.exe , etc.) lors de la construction sous Windows et des outils de compilation GNU lors de la construction sous Linux. La difficulté de cette approche dépend de la complexité des makefiles.

Portage du code: Cela dépend des API et des bibliothèques que vous utilisez et des avertissements / erreurs / bizarreries du compilateur que vous allez rencontrer. Pour une réponse plus précise, posez une question plus précise.

CMake a été mentionné. J'ai utilisé CMake et compilé avec succès le projet Visual Studio résultant. J'ai trouvé la documentation de CMake très peu utile - j'ai dû demander à un utilisateur existant - et le manuel officiel (qui coûte de l'argent) était épuisé à l'époque. De plus, le projet Visual Studio qu’il a produit était formaté de manière très rigide selon le modèle préféré par celui qui a écrit le convertisseur. Je ne savais pas comment personnaliser les options de projet ou les fichiers source de groupe.

Je compile régulièrement entre Visual Studio et G ++. Pour la plupart, il vous suffit d'ajouter tous les fichiers source et les fichiers d'en-tête dans un projet Visual Studio (Ajouter des fichiers existants et d'ajouter l'intégralité de l'arborescence source), puis de le compiler. Généralement, vous obtenez des erreurs, vous commencez donc à corriger les bogues. Si vous avez utilisé des bibliothèques spécifiques à une plate-forme, vous risquez de ne pas être en mesure de porter une autre solution ou de supprimer des fonctionnalités.

Encore une mise en garde: Visual Studio et G ++ ont des bizarreries de compilateur différentes. Pour la plupart, ils sont parfaitement conformes à la norme C ++, mais un code légèrement hors normes qui fonctionne dans l’une ne peut pas fonctionner dans l’autre. J'ai constaté que cela était particulièrement vrai en ce qui concerne les modèles, Visual Studio étant étrangement tolérant des erreurs de syntaxe.

CMake a la gentillesse de générer un projet Visual Studio.

Si vous n'en avez pas besoin, je suggère le système de construction Meson. Bien plus agréable, proposition similaire. Nécessite python3 et ninja, mais personne n'est parfait. :)

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