IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C++ Discussion :

Compilation multi plateforme


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Gérant
    Inscrit en
    Février 2006
    Messages
    264
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Dom-Tom

    Informations professionnelles :
    Activité : Gérant

    Informations forums :
    Inscription : Février 2006
    Messages : 264
    Par défaut Compilation multi plateforme
    Bonjour,

    Je réapprends depuis le début ce langage que je n'ai plus touché depuis très très longtemps !

    Pour bien commencer, j'aimerais avoir des indications pour que mes programmes soient compilable multi-plateforme (Linux, Windows, Mac)

    J'utilise principalement CodeBlocks, VCS2008 et Cygwin

    Si vous avez des tutos qui décrivent comment faire du compilable multi-plateforme, ce serait intéressant.

    Merci et bonne année 2010 @ tous !

  2. #2
    Membre Expert Avatar de Astraya
    Homme Profil pro
    Consommateur de café
    Inscrit en
    Mai 2007
    Messages
    1 048
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Consommateur de café
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2007
    Messages : 1 048
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    #include <iostream>
    #if defined(_WIN32)
     
    int main()
    {
        std::cout << "Windows";
        return 0;
    }
    #elif(UNIX)
     
    int main()
    {
        std::cout << "Unix";
        return 0;
    }
    #elif(__CYGWIN__)
     
    int main()
    {
        std::cout << "Cygwin";
        return 0;
    }
     
    #else
     
    int main()
    {
        cout << "Inconnu";
        return 0;
    }
     
    #endif
    Ceci te conviendrais?

  3. #3
    Membre éclairé
    Homme Profil pro
    Gérant
    Inscrit en
    Février 2006
    Messages
    264
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Dom-Tom

    Informations professionnelles :
    Activité : Gérant

    Informations forums :
    Inscription : Février 2006
    Messages : 264
    Par défaut
    Merci Astraya,

    Cela me convient, il ne me reste plus qu'à voir les différences entre chaque système pour que la compilation s'effectue sans problème suivant le système utilisé.

    Pour information, je voudrais faire une petite application client/serveur de test, bref un hello world like !

    Je voudrais donc compiler le client/serveur sur chaque système, sachant que le C/S ne seront pas forcément sur le même système, par exemple Mac/Windows ou Unix/Mac

    Le tout est de faire mes futures applications multi-plateforme et donc d'avoir un gabarit C++ pour cette seule fonction.

    Merci.

  4. #4
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Par défaut
    Soit tu te fais de la compilation conditionnelle plus ou moins à outrance, soit tu n'utilises QUE des fonctions standard C/C++ (=> exit le multithread), soit tu utilises une librairie d'abstraction qui effectue déjà la tripaille à ta place.

    Une chance pour toi, les sockets BSD font justement partie des fonctions portables, donc tu peux tout à fait (aux inclusions d'entêtes près) avoir un programme identique et sans compilation conditionnelle sur toutes les plate-formes possibles. Pour aller plus loin, ou plus simplement si tu préfères, tu peux utiliser des librairies comme ACE, POCO, ICE et dans une certaine mesure Boost. Si tu comptes aller plus loin dans le domaine des applications portables, je ne saurais trop te conseiller d'aller directement sur une librairie d'abstraction et de t'épargner la phase "barbare" consistant à le faire à la main... Mes préférences vont à POCO pour l'aspect système, et à ICE pour l'aspect réseau. ACE fait les deux, mais je trouve cette librairie franchement mal foutue et mal documentée, mais sa portabilité est supérieure à celle des deux autres.
    Boost est également très portable, mais guère plus que POCO / ICE en fait. Par contre, elle colle parfaitement à l'esprit de la STL, ce qui peut être un avantage ou un inconvénient suivant tes préférences personnelles.

    Attention aussi à penser à gérer l'endianness, l'alignement (et donc la taille des mots-machine) et la sérialisation de façon générale si tu veux réellement quelque chose qui soit absolument et totalement portable. Mais dans un premier temps, tu peux t'épargner ce chapitre.
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

  5. #5
    Membre éclairé
    Homme Profil pro
    Gérant
    Inscrit en
    Février 2006
    Messages
    264
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Dom-Tom

    Informations professionnelles :
    Activité : Gérant

    Informations forums :
    Inscription : Février 2006
    Messages : 264
    Par défaut
    Merci Mac LAK,

    En effet je me souviens vaguement avoir testé ICE il y a un moment, et en effet la solution d'une librairie est la meilleure, me permettant ainsi de gagner du temps pour parfaire le codage plutôt plutôt que de faire de la compilation conditionnelle...

    Je testerai Boost étant donné que je m'oriente plutôt STL aussi !
    Tant qu'à faire de tout reprendre à zéro, autant le faire bien

    Merci et bonne année !

  6. #6
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par défaut
    Salut,
    S'il s'agit de faire des applications avec IHM et tout le toutim, tu as aussi des framework multiplateformes comme Qt ou wxWidgets.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Lazarus] [Mac OS X] Installation et compilation multi-plateforme
    Par arkhamon dans le forum Lazarus
    Réponses: 1
    Dernier message: 29/02/2012, 18h53
  2. Apprendre un langage compilé "multi-plateforme" et "multi-purpose"
    Par Autodidacte xp dans le forum Langages de programmation
    Réponses: 34
    Dernier message: 15/12/2011, 18h38
  3. Compilation multi-plateforme et bibliothèque
    Par Leeelooo dans le forum Bibliothèques
    Réponses: 1
    Dernier message: 09/05/2007, 11h35
  4. Outils de développement multiplateforme
    Par jibe74 dans le forum Outils pour C & C++
    Réponses: 27
    Dernier message: 30/10/2006, 00h04
  5. Quel lg et IDE pour dev 1 appli multi-plateformes?
    Par Langelot dans le forum Langages de programmation
    Réponses: 7
    Dernier message: 03/02/2005, 23h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo