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