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

Syst�mes de compilation Discussion :

configure pour C++ sans les header du langage C


Sujet :

Syst�mes de compilation

  1. #1
    Membre �clair�

    Homme Profil pro
    d�veloppeur � la maison
    Inscrit en
    Septembre 2006
    Messages
    409
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn et Garonne (Midi Pyr�n�es)

    Informations professionnelles :
    Activit� : d�veloppeur � la maison

    Informations forums :
    Inscription : Septembre 2006
    Messages : 409
    Billets dans le blog
    16
    Par d�faut configure pour C++ sans les header du langage C
    Bonjour,

    �a compile quand-m�me, mais...
    configure.ac:
    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
    #                                               -*- Autoconf -*-
    # Process this file with autoconf to produce a configure script.
     
    AC_PREREQ([2.71])
    AC_INIT([hello], [1.0], [[email protected]])
    AM_INIT_AUTOMAKE
    AC_CONFIG_SRCDIR([hello.cpp])
    AC_CONFIG_HEADERS([config.h])
    AC_LANG([C++])
    # Checks for programs.
    AC_PROG_CXX
     
    # Checks for libraries.
     
    # Checks for header files.
    AC_CHECK_HEADERS([iostream])
    # Checks for typedefs, structures, and compiler characteristics.
     
    # Checks for library functions.
    AC_CONFIG_FILES([Makefile])
     
    AC_OUTPUT
    le probl�me est que configure donne entre autres:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    checking for stdio.h... yes
    checking for stdlib.h... yes
    checking for string.h... yes
    checking for inttypes.h... yes
    checking for stdint.h... yes
    checking for strings.h... yes
    checking for sys/stat.h... yes
    checking for sys/types.faire
    checking for unistd.h... yes
    comment faire pour que configure ne v�rifie pas ces headers du C?

    quelqu'un a une id�e?

  2. #2
    Membre �clair�

    Homme Profil pro
    d�veloppeur � la maison
    Inscrit en
    Septembre 2006
    Messages
    409
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn et Garonne (Midi Pyr�n�es)

    Informations professionnelles :
    Activit� : d�veloppeur � la maison

    Informations forums :
    Inscription : Septembre 2006
    Messages : 409
    Billets dans le blog
    16
    Par d�faut
    j'ai peut-�tre oubli� de pr�ciser que le programme � compiler est en C++

    une id�e ?

  3. #3
    Membre Expert
    Femme Profil pro
    ..
    Inscrit en
    D�cembre 2019
    Messages
    679
    D�tails du profil
    Informations personnelles :
    Sexe : Femme
    �ge : 95
    Localisation : Autre

    Informations professionnelles :
    Activit� : ..

    Informations forums :
    Inscription : D�cembre 2019
    Messages : 679
    Par d�faut
    Salut,

    Je pr�viens que mon exp�rience d'Autoconf est inexistante, juste quelques passages de param�tres � Configure et c'est tout.
    Mais ce que je peux �crire, c'est que certains ent�tes C sont requis par le C++, et d'autres par l'environnement h�te.
    Cela dit, ce n'est pas pour autant que ces tests sont n�cessaires, et �a aurait �t� utile de pr�ciser quelle macro exactement les d�clenche.
    Qu'� cela ne tienne, j'ai d�sign� un suspect (doublement) id�al, AC_CHECK_HEADERS(), et RTFM� la doc

    D'apr�s elle donc :

    AC_CHECK_HEADERS([xyz])

    est �tendu comme cela :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    AC_CHECK_HEADERS([xyz.h], [], [],
    [AC_INCLUDES_DEFAULT[
    #ifdef HAVE_XYZ_H
    # include <xyz.h>
    #endif
    ]])
    C'est AC_INCLUDES_DEFAULT qui d�clenche ces tests.

    En �tant explicite, il ne devrait plus y en avoir :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    AC_CHECK_HEADERS([xyz.h], [], [],
    [[
    #ifdef HAVE_XYZ_H
    # include <xyz.h>
    #endif
    ]])


    Seconde chose, le suspect avec du "iostream" dans la poche, c'�tait tr�s curieux.
    Parce qu'en fait, soit le compilateur est conforme au standard, soit il ne l'est pas. �a tombe bien, Autoconf a une macro pour le v�rifier:

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    AX_CXX_COMPILE_STDCXX(VERSION, [ext|noext], [mandatory|optional])
    ou AX_CXX_COMPILE_STDCXX_[11|14|...]([ext|noext], [mandatory|optional])
    Maintenant que GCC est bien avanc� dans les modules, un simple "import std" (C++23) remplace d�j� les "#includes<...>" habituels.
    Et comme il est question d'avancement, pour v�rifier la disponibilit� de certaines caract�ristiques du C++, il y a les tests de traits de langage (Feature-Test Macro).

Discussions similaires

  1. Liste d�roulante pour liste sans les cellules masqu�es
    Par AMY974 dans le forum Macros et VBA Excel
    R�ponses: 8
    Dernier message: 03/10/2018, 16h01
  2. Afficher la ligne enti�re dans une listView Sans les headers
    Par Msysteme dans le forum Windows Forms
    R�ponses: 2
    Dernier message: 26/02/2009, 12h56
  3. Utiliser une DLL sans les headers
    Par Ange_blond dans le forum C++
    R�ponses: 16
    Dernier message: 23/02/2009, 09h02
  4. R�ponses: 4
    Dernier message: 02/05/2006, 12h08
  5. probl�me de configuration pour les sessions
    Par spilliaert dans le forum Langage
    R�ponses: 13
    Dernier message: 27/12/2005, 20h44

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