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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé

    Homme Profil pro
    développeur à la maison
    Inscrit en
    Septembre 2006
    Messages
    435
    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 : 435
    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], [matser@matser.lautre.net])
    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
    435
    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 : 435
    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
    731
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 95
    Localisation : Autre

    Informations professionnelles :
    Activité : ..

    Informations forums :
    Inscription : Décembre 2019
    Messages : 731
    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).

  4. #4
    Membre éclairé

    Homme Profil pro
    développeur à la maison
    Inscrit en
    Septembre 2006
    Messages
    435
    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 : 435
    Billets dans le blog
    16
    Par défaut
    J'ai trouvé : Ça fonctionne avec ce 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
    #                                               -*- Autoconf -*-
    # Process this file with autoconf to produce a configure script.
     
    AC_PREREQ([2.71])
    AC_INIT([hell0], [1.0], [m.s0@free.fr])
    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.
     
    # Checks for typedefs, structures, and compiler characteristics.
     
    # Checks for library functions.
    AC_CONFIG_FILES([Makefile])
    AC_OUTPUT
    il falait enlever cete ligne : AC_CHECK_HEADERS([iostream])
    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
    $ aclocal
    $ autoheader
    $ automake -a -c
    $ autoconf
    $ ./configure
    checking for a BSD-compatible install... /usr/bin/install -c
    checking whether sleep supports fractional seconds... yes
    checking filesystem timestamp resolution... 0.01
    checking whether build environment is sane... yes
    checking for a race-free mkdir -p... /usr/bin/mkdir -p
    checking for gawk... no
    checking for mawk... mawk
    checking whether make sets $(MAKE)... yes
    checking whether make supports nested variables... yes
    checking xargs -n works... yes
    checking for g++... g++
    checking whether the C++ compiler works... yes
    checking for C++ compiler default output file name... a.out
    checking for suffix of executables... 
    checking whether we are cross compiling... no
    checking for suffix of object files... o
    checking whether the compiler supports GNU C++... yes
    checking whether g++ accepts -g... yes
    checking for g++ option to enable C++11 features... none needed
    checking whether make supports the include directive... yes (GNU style)
    checking dependency style of g++... gcc3
    checking that generated files are newer than configure... done
    configure: creating ./config.status
    config.status: creating Makefile
    config.status: creating config.h
    config.status: executing depfiles commands

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, 17h01
  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, 13h56
  3. Utiliser une DLL sans les headers
    Par Ange_blond dans le forum C++
    Réponses: 16
    Dernier message: 23/02/2009, 10h02
  4. Réponses: 4
    Dernier message: 02/05/2006, 13h08
  5. problème de configuration pour les sessions
    Par spilliaert dans le forum Langage
    Réponses: 13
    Dernier message: 27/12/2005, 21h44

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