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 :

Récupérer les options passées au compilateur


Sujet :

C++

  1. #1
    Membre régulier

    Inscrit en
    Juin 2008
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 49
    Points : 114
    Points
    114
    Par défaut Récupérer les options passées au compilateur
    Bonsoir,

    Je travaille sur un code scientifique dont les résultats et les performances dépendent étroitement des options de compilation utilisées, notamment des optimisations activées.
    Je cherche à récupérer la liste des options passées au compilateur dans mon code pour pouvoir l'écrire dans les fichiers résultats.

    J'ai regardé parmi les directives de préprocesseurs de GCC sans trouver si il existait une telle option. Sauriez-vous si il y a moyen de faire ça ?

    Et avec le compilateur Intel ?

    Merci !

  2. #2
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 632
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 632
    Points : 30 711
    Points
    30 711
    Par défaut
    Salut,

    J'aurais tendance à dire que cela dépend grandement des options de compilation que tu souhaites récupérer
    1. Les define, par exemple (option -DQUELQUECHOSE ) seront faciles à récupérer, "simplement" parce que tu peux parfaitement les tester avec les diirective préprocesseur ifdef, ifndef ou if defined(QUELQUECHOSE)
    2. D'autres pourraient être récupérables par les define qu'elles impliquent sans doute (je pense entre autres aux options -m32/-m64, peut etre -fpic, -g ou les options définissant l'architecture cible)
    3. D'autres enfin sont, pour autant que je sache, internes au compilateur et ne sont donc pas disponibles dans le binaire généré.
    La meilleure solution serait donc sans doute non pas de vouloir mettre ces informations dans un fichier log généré par ton application, mais de:
    1. faire en sorte que les binaires générés se trouvent dans des dossiers séparés (un dossier par jeu d'options )
    2. de faire en sorte que le Makefile génère un fichier reprenant les variables qui ont servi comme options de compilation (typiquement CFLAGS, CXXFLAGS, CPPFLAGS et LDFLAGS )
    3. de faire en sorte que le fichier généré en (2) prenne place dans le dossier dans lequel se trouve le binaire correspondant généré en (1)

    Tu peux aussi, si tu utiliise les autotools, jeter un oeil au config.log, qui indique régulièrement les valeurs des variables qu'il envisage d'utiliser

    Il y a surement des possibilités bien plus avancées, mais elles ne me viennent pas à l'esprit à l'instant

  3. #3
    Membre régulier

    Inscrit en
    Juin 2008
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 49
    Points : 114
    Points
    114
    Par défaut
    Merci.

    C'est bien ce que je pensais. Evidemment, les #define sont récupérables, mais j'aurais bien aimé aussi avoir les -f...
    La solution que j'utilise actuellement c'est d'utiliser un script perl appelé par le Makefile (en fait par cmake). Il génère un fichier .cpp contenant une simple constante std::string déclarée en extern dans les autres fichiers où j'en ai besoin.
    Je trouvais ça moyennement propre, mais si il n'y a pas d'autre solution, je vais en rester là.

Discussions similaires

  1. Réponses: 5
    Dernier message: 15/06/2012, 12h28
  2. Réponses: 2
    Dernier message: 31/01/2008, 15h30
  3. Réponses: 4
    Dernier message: 19/03/2007, 18h12
  4. Réponses: 1
    Dernier message: 20/11/2006, 10h21
  5. Récupérer les valeurs passées dans l'URL
    Par bogsy15 dans le forum Langage
    Réponses: 40
    Dernier message: 14/08/2006, 09h24

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