Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2518 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  [RESOLU] compiler sources c et c++ avec autoconf/automake

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[RESOLU] compiler sources c et c++ avec autoconf/automake

n°1056525
SSeb31
Posté le 22-04-2005 à 14:08:43  profilanswer
 

Salut,
 
J'utilise les outils de génération de makefile automatiques: autoconf et automake.
Je dois compiler plusieurs sources avec g++. Le seul problème est que lors de l'appel d'automake, il veut absolument que je donne à mon fichier configure.in la commande demandant le compilateur GCC car j'ai un .c dans mon prog qui doit être utiliser avec g++ pour le bon fonctionnement de mon programme.
 
Sauriez-vous si il existe une macro ou une option à mettre dans l'un de mes fichiers pour "forcer" la compilation avec G++???
 
Voici mon code:
 
Fichier configure.in:
AC_INIT(main.cpp)
AM_INIT_AUTOMAKE(blabla, 1.0)
AC_PROG_CXX
AC_PROG_CXXCPP
AC_PROG_RANLIB
AC_OUTPUT(Makefile)
 
 
Merci d'avance ;)


Message édité par SSeb31 le 20-05-2005 à 16:59:51
mood
Publicité
Posté le 22-04-2005 à 14:08:43  profilanswer
 

n°1056639
SSeb31
Posté le 22-04-2005 à 14:49:22  profilanswer
 

Voici le message d'erreur:
/usr/share/automake-1.9/am/depend2.am: am__fastdepCC does not appear in AM_CONDITIONAL
Makefile.am: C source seen but 'CC' is undefined
Makefile.am:  
Makefile.am: The usual way to define 'CC' is to add 'AC_PROG_CC'
Makefile.am: to 'configure.in' and run 'autoconf'again

n°1090966
SSeb31
Posté le 20-05-2005 à 16:36:10  profilanswer
 

Bon, j'ai réussit à faire ce que je voulait faire ;=)
Je me donnes donc la réponse à moi-même sans aucune pretentio aucune
 
En fait, il suffit de compiler les .c avec gcc et les .cpp avec g++.
La solution réside ailleurs.
Dans mon cas, je veux utiliser des fonctions c dans cu c++.
 
Je dois donc permettre à mon code c++ de "reconnaitre" les fonctions c. Pour cela, je dois mettre les fonctions c dans un secteur memoire qui pourra etre lu autant par les librairies c que par les librairies c++.
Pour se faire, je dois "encadrer" les declaration du .h de mes fonctions c par:
               extern "C"{
                    ...declarations
                    void lala();
                    ...
               }
 
Maintenant, je me trouves dans la situation suivante: le lieu de la memoire (extern)"C" reconnait mes fonctions c. Mais, si on essaie de compiler du code c++ en n'incluant que l'interface .h des fonctions c, g++ ne trouve pas ces fonctions.
 
Le deuxieme point consiste donc à donner le lien correspondant à g++.
Cela se passe dans les .cpp qui utilisent les fonctions c
Avant toute implémentation des constructeurs ou autres, il faut "déclarer" les liens vers les fonctions c. Cela se fait de la manière suivante:
 
               #include ...
 
               extern "C" void lala();
 
               ... Implementation des fonctions c++ ...
 
 
Une fois cela fait, les outils automake et autoconf pourront etre utiliser comme decrit precedemment.
 
 
Autre chose, on peut aussi utiliser cette feinte afin de reconnaitre un objet déclaré dans un main, dans un interface. Toujours sympa à savoir, quand on veut dissocier une interface d'un main.
 
Bon, en espérant que cela pourra servir à d'autres.
 
++

n°2199970
analou
Posté le 12-08-2013 à 14:55:00  profilanswer
 

Très vieux sujet, mais je réponds quand même. Pour compiler du C et du C++ avec g++, tu utilises AC_PROG_CC([g++]) pour forcer le compilateur et AC_PROG_CXX. Ensuite tu utilises extern C


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  [RESOLU] compiler sources c et c++ avec autoconf/automake

 

Sujets relatifs
[Résolu] Insérer dans un champ texte en fonction de checkbox[résolu] Signature forum hardware.fr -> cURL
[C] Valeur reçue différente de la valeur retournée [Résolu]qui peut dire ce qui cloche dans mon mini prog ?? [ RESOLU ]
Arrondir un filesize [RESOLU][Java] [Resolu] Erreur ODBC État de curseur non valide
JScrollBar: mais tu va demarrer en haut , oui!!!![resolu]Style sur un Button l'aligne en bas ? [résolu]
compiler une source VB6 sous VB.NET -> impossible?extraire des données de plusieures sources
Plus de sujets relatifs à : [RESOLU] compiler sources c et c++ avec autoconf/automake


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR