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 confirmé

    Inscrit en
    Juin 2008
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 49
    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
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 635
    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
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  3. #3
    Membre confirmé

    Inscrit en
    Juin 2008
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 49
    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, 11h28
  2. Réponses: 2
    Dernier message: 31/01/2008, 14h30
  3. Réponses: 4
    Dernier message: 19/03/2007, 17h12
  4. Réponses: 1
    Dernier message: 20/11/2006, 09h21
  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, 08h24

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