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 :

Detecter l'OS qui compile


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 10
    Par défaut Detecter l'OS qui compile
    Bonjour,

    J'aimerais savoir si il y a un moyen de detecter l'OS en cours à partir du code source. Je m'explique:

    J'ai un code, qui doit marcher sous Windows/Unix/Mac/Cygwin/etc... Sous Unix, je voudrais compiler une certaine partie de code, et sous windows, une autre, etc...

    Quelque chose du genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    #ifdef WINDOWS
    // je compile cette partie si je suis sous Win 
     
    # elif
    // je compile cette partie si je suis sous Linux
     
     
    [...]
     
     
    #endif
    J'ai bien pensé à créer un fichier .h qui contiendrait un #define MON_OS 1, mais il faudrait le modifier à chaque compilation... pas très utile.

    Je sais qu'il doit exister des variables système globales, mais je ne les connais pas.

    Merci de votre aide.


    [Balises CODE rajoutées par Loulou24, merci d'y penser à l'avenir]

  2. #2
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Je sais qu'il doit exister des variables système globales, mais je ne les connais pas
    Oui, et pour les trouver le mieux est encore de regarder à l'interieur des en-têtes de configuration de bibliothèques portables (boost par exemple).

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 10
    Par défaut
    OK, merci de l'info.

    Je me doutais qu'il fallais que je cherche dans cette direction, mais cette idée ne me plaisait guère... Eplucher un code tout noueau... j'ai dejà du mal avec le mien...

    Je pensais que quelqu'un aurait pu laisser trace d'un quelconque travail dans le meme sens.

    Si j'y arrive, peut-etre que je repasserai ici pour donner des nouvelles

  4. #4
    Membre chevronné
    Avatar de rolkA
    Inscrit en
    Juillet 2003
    Messages
    324
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 324
    Par défaut
    A ma connaissance, il y a déjà WINDOWS sous Windows et __linux__ sous Linux. D'autre définitions permettent d'être plus précis (OS_WIN32 et OS_WIN64 par exemple). Pour le reste, je ne sais pas, il faut éplucher les librairies les plus portables du net

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 10
    Par défaut
    Bon, ben j'ai trouvé... je pensais que ce serais plus compliqué que ça à trouver...


    fichier select_platform_config.hpp
    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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
     
    //  Boost compiler configuration selection header file
     
    //  (C) Copyright John Maddock 2001 - 2002. 
    //  (C) Copyright Jens Maurer 2001. 
    //  Use, modification and distribution are subject to the 
    //  Boost Software License, Version 1.0. (See accompanying file 
    //  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
     
    //  See http://www.boost.org for most recent version.
     
    // locate which platform we are on and define BOOST_PLATFORM_CONFIG as needed.
    // Note that we define the headers to include using "header_name" not
    // <header_name> in order to prevent macro expansion within the header
    // name (for example "linux" is a macro on linux systems).
     
    #if defined(linux) || defined(__linux) || defined(__linux__)
    // linux:
    #  define BOOST_PLATFORM_CONFIG "boost/config/platform/linux.hpp"
     
    #elif defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__)
    // BSD:
    #  define BOOST_PLATFORM_CONFIG "boost/config/platform/bsd.hpp"
     
    #elif defined(sun) || defined(__sun)
    // solaris:
    #  define BOOST_PLATFORM_CONFIG "boost/config/platform/solaris.hpp"
     
    #elif defined(__sgi)
    // SGI Irix:
    #  define BOOST_PLATFORM_CONFIG "boost/config/platform/irix.hpp"
     
    #elif defined(__hpux)
    // hp unix:
    #  define BOOST_PLATFORM_CONFIG "boost/config/platform/hpux.hpp"
     
    #elif defined(__CYGWIN__)
    // cygwin is not win32:
    #  define BOOST_PLATFORM_CONFIG "boost/config/platform/cygwin.hpp"
     
    #elif defined(_WIN32) || defined(__WIN32__) || defined(WIN32)
    // win32:
    #  define BOOST_PLATFORM_CONFIG "boost/config/platform/win32.hpp"
     
    #elif defined(__BEOS__)
    // BeOS
    #  define BOOST_PLATFORM_CONFIG "boost/config/platform/beos.hpp"
     
    #elif defined(macintosh) || defined(__APPLE__) || defined(__APPLE_CC__)
    // MacOS
    #  define BOOST_PLATFORM_CONFIG "boost/config/platform/macos.hpp"
     
    #elif defined(__IBMCPP__)
    // IBM
    #  define BOOST_PLATFORM_CONFIG "boost/config/platform/aix.hpp"
     
    #elif defined(__amigaos__)
    // AmigaOS
    #  define BOOST_PLATFORM_CONFIG "boost/config/platform/amigaos.hpp"
     
    #else
     
    #  if defined(unix) \
          || defined(__unix) \
          || defined(_XOPEN_SOURCE) \
          || defined(_POSIX_SOURCE)
     
       // generic unix platform:
     
    #  ifndef BOOST_HAS_UNISTD_H
    #     define BOOST_HAS_UNISTD_H
    #  endif
     
    #  include <boost/config/posix_features.hpp>
     
    #  endif
     
    #  if defined (BOOST_ASSERT_CONFIG)
          // this must come last - generate an error if we don't
          // recognise the platform:
    #     error "Unknown platform - please configure and report the results to boost.org"
    #  endif
     
    #endif
    Merci à vous

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

Discussions similaires

  1. Procedure qui compile, probleme execution
    Par zuzuu dans le forum SQL
    Réponses: 6
    Dernier message: 31/08/2006, 10h41
  2. dll qui compile mais qui bloque en appel
    Par darkman10 dans le forum Windows
    Réponses: 7
    Dernier message: 09/05/2006, 15h02
  3. Quelle API pour detecter un Exe qui s'execute.
    Par caviar dans le forum MFC
    Réponses: 3
    Dernier message: 20/04/2006, 13h26
  4. Réponses: 3
    Dernier message: 07/03/2006, 22h29
  5. [WTK] HelloWorld qui compile pas
    Par metos256 dans le forum Java ME
    Réponses: 2
    Dernier message: 08/09/2005, 12h35

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