6 votes

Comment développer un projet C++ multiplateforme ?

Je suis un débutant en C++ et je commence à développer mon premier projet C++ multiplateforme. Je dois utiliser des appels spécifiques à la plateforme (Win32 et POSIX) et je dois donc compiler fréquemment à la fois sous Windows et sous Linux.

Pour les projets à plateforme unique, j'utilise, jusqu'à présent, KDevelop sous Linux et Visual Studio 2012 sous Windows.

Comment puis-je utiliser deux IDE différents dans deux systèmes d'exploitation différents avec le même projet ?

  1. Dois-je utiliser un seul IDE, multiplateforme ?
  2. Devrais-je apprendre CMake (ou similaire) et le configurer pour qu'il fonctionne avec les deux IDE ?
  3. Pourrais-je/devrais-je héberger mon code sur le web et le synchroniser automatiquement avec les projets hors ligne ?
  4. Des alternatives ?

Merci d'avance à tous.

EDIT :

Juste pour clarifier, le projet sera un simple serveur pour un protocole scolaire. Il y aura un client qui demandera de télécharger/récupérer des fichiers vers/depuis le serveur. Avec scolastique Je veux dire que, par exemple, je dois utiliser pthreads/win32 threads au lieu d'une bibliothèque de threads C++ de plus haut niveau.

6voto

Mats Petersson Points 70074
  1. Peut-être - cela dépend vraiment de ce avec quoi vous vous sentez le plus à l'aise. Comme le projet n'est pas graphique, tout ce que l'IDE vous offre est l'édition de fichiers et la compilation. Vous pouvez donc construire le projet sur une machine avec l'IDE, puis déplacer les sources sur une autre machine pour les compiler.

  2. Personnellement, j'aurais juste deux makefiles, un pour Linux et un pour Widnows. Cela rend la vie assez simple [vous pourriez avoir un makefile "externe" qui choisit le bon en se basant sur une méthode intelligente].

  3. Oui, vous devez trouver un système de contrôle de version qui fonctionne à la fois pour Windows et Linux (git, mercurial, subversion, bazaar et plusieurs autres). Ainsi, non seulement vous disposerez d'un dépôt central [vous pouvez utiliser l'une ou l'autre de vos machines comme "serveur" pour l'un de ces systèmes], mais vous pourrez également conserver la trace de vos modifications. Cela vaut vraiment la peine de le faire !

  4. Il existe des centaines d'alternatives différentes. Mais plus vous restez simple, et moins vos outils sont compliqués, plus vous avez de temps à consacrer à la programmation de votre projet, plutôt que, par exemple, à comprendre pourquoi CMake ne construit pas comme vous le voulez.

Veillez également à séparer tout votre code spécifique au système en un seul fichier par architecture. De cette façon, il est facile de le porter sur une autre architecture plus tard, et la majeure partie de votre code compile sur les deux systèmes.

3voto

Ulrich Eckhardt Points 5381
  1. En général, il est facile d'adapter les fichiers de projet/construction spécifiques à l'IDE aux fichiers sources ajoutés, déplacés ou supprimés. Par conséquent, l'utilisation d'un EDI multiplateforme n'est pas si importante.
  2. Vous pouvez le faire, je pense que CMake peut aussi créer des fichiers de projet pour certains IDEs qui peuvent ensuite être utilisés pour construire le projet.
  3. Ahem, si vous voulez l'héberger en ligne ou non, c'est votre choix. Ce que vous devez absolument faire, c'est utiliser une sorte de contrôle de version. Un système de suivi des bogues est également utile. Si vous souhaitez de toute façon mettre le code en libre accès, l'utilisation d'un des services d'hébergement existants est un oui clair.
  4. Pas vraiment.

Une remarque cependant : vous aurez beaucoup plus de mal à rendre le code C++ portable. Construire au-dessus d'une boîte à outils comme Qt est d'une aide précieuse. Si vous voulez rester plus proche du C++ standard, envisagez au moins d'utiliser Boost pour des choses comme les threads, les pointeurs intelligents, l'accès au système de fichiers. Bonne chance !

2voto

CapelliC Points 30055

Mon expérience récente me suggère de jeter un coup d'œil à Qt. L'IDE (QtCreator) est très bon, et disponible sur toutes les principales plateformes.

J'ai utilisé pour un projet assez simple, qui utilise des composants assez complexes, comme OpenCV et ZBar. Je développe sur Linux, je copie les sources sur Windows, et je recompile.

J'ai eu quelques difficultés à configurer OpenCV sur les deux plateformes, donc je ne peux pas dire que c'est super facile, mais ça marche. Puisque vous connaissez déjà KDevelop, vous devriez déjà connaître Qt.

J'accorde également beaucoup de valeur à la tendance récente qui voit dans Qt5 la plate-forme d'Ubuntu sur les smartphones. J'espère vraiment voir cela se développer.

HTH

1voto

greyfade Points 14358

Comment puis-je utiliser deux IDE différents dans deux systèmes d'exploitation différents avec le même projet ?

Dois-je utiliser un seul IDE, multiplateforme ?

Non. Je pense que c'est un cas où l'on pose la mauvaise question. Pour faire un projet multiplateforme, ce qui compte c'est votre build scripts et la neutralité système de votre code. Parfois, il peut être utile d'avoir des fichiers de projet pour votre IDE préféré, mais maintenir plusieurs fichiers de projet pour plusieurs IDE ne fera que rendre les choses plus difficiles et complexes pour vous. Au lieu de cela, vous devriez vous concentrer sur la recherche d'un système de construction qui minimise le temps que vous consacrez à la maintenance du projet.

Pour cela, CMake et PreMake semblent être deux des meilleurs outils pour y parvenir.

Il y a des douzaines d'alternatives (comme SCons, Cook, kbuild, Jam et Boost Jam, et beaucoup d'autres), mais puisque CMake et PreMake génèrent tous deux des fichiers de projet et construisent des scripts, ils pourraient être les meilleures solutions.

Votre kilométrage varie.

Pourrais-je/devrais-je héberger mon code sur le web et le synchroniser automatiquement avec les projets hors ligne ?

Vous devez avoir un contrôle de source robuste qui fonctionne partout où vous allez. Git et Mercurial semblent mieux fonctionner si vous utilisez une sorte d'hébergement "en nuage" comme Github ou BitBucket, mais ils ne l'exigent en aucun cas. En fonction de votre environnement de travail et de la taille de votre équipe, vous préférerez peut-être Subversion, PerForce ou autre, mais c'est à vous et à votre équipe d'en décider.

1voto

hyde Points 13720
  1. cela vous aidera, vous aurez très probablement besoin de déboguer sur de nombreuses plateformes... Qt Creator, Netbeans et Eclipse me viennent à l'esprit.

  2. Oui. cmake, ou qmake pour Qt peut-être.

  3. Pas de question technique. Utilisez simplement le contrôle de version ! github et gitorious sont des choix faciles pour les projets open source.

  4. Qt est un choix évident pour une application GUI C++ multiplateforme, et également un choix décent pour une application réseau sans GUI.

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