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 :

cmake path des fichiers headers


Sujet :

C++

  1. #1
    Membre �clair�
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    421
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 421
    Par d�faut cmake path des fichiers headers
    Bonjour � tous,

    Je souhaiterai dans mes fichiers sources appeler mes headers qu'avec leur nom de fichier (sans path absolue ou relatif). Par exemple au lieu d'�crire "../../test.hpp" faire "test.hpp".
    J'utilise cmake pour linker mes fichiers, j'ai beau chercher je n'ai pas trouv� de moyen de faire �a. J'ai toujours un bug qui me dit que le compilateur ne trouve pas le lien vers mon fichier header.
    Pouvez-vous m'aider s'il vous pla�t ?

    Voici mon fichier test.cpp qui est dans un dossier appel� source :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    #include "/test.hpp"
     
    int main()
    {
     
    return 0;
     
    }
    Voici mon fichier test.hpp qui est dans un dossier header distincte du dossier source :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
     
    #ifndef TEST_HPP
    #define TEST_HPP
     
    #define toto 1;
     
    #endif
    Et mon script cmake :
    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
     
    CMAKE_MINIMUM_REQUIRED(VERSION 2.8.8)
     
    PROJECT(exec)
     
    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
     
    set(MY_HEADER "${CMAKE_SOURCE_DIR}../header")
     
    # Chercher les fichiers sources
    FILE(
        GLOB_RECURSE
        FICHIERS_SOURCES
        ${MY_HEADER}/test.hpp
        source/	
    )
     
     
     
    ADD_EXECUTABLE(${PROJECT_NAME} ${FICHIERS_SOURCES})
     
    TARGET_LINK_LIBRARIES(${PROJECT_NAME})
    Le projet est en pi�ce jointe.

  2. #2
    Membre �clair�
    Homme Profil pro
    Ing�nieur d�veloppement logiciels
    Inscrit en
    Avril 2010
    Messages
    517
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activit� : Ing�nieur d�veloppement logiciels
    Secteur : Sant�

    Informations forums :
    Inscription : Avril 2010
    Messages : 517
    Par d�faut
    Salut,

    Ce n'est pas trop du C++ mais bon.

    Tu n'as pas d� utiliser les bons mots cl�s je pense parce qu'une rapide recherche m�ne � cette page: include_directories

  3. #3
    Responsable Syst�mes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Ao�t 2011
    Messages
    18 266
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (�le de France)

    Informations professionnelles :
    Activit� : Gestion de parcs informatique
    Secteur : High Tech - Mat�riel informatique

    Informations forums :
    Inscription : Ao�t 2011
    Messages : 18 266
    Par d�faut
    ceci signifie que ton fichier va �tre cherch� � la racine du disque.
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  4. #4
    Expert confirm�

    Avatar de dragonjoker59
    Homme Profil pro
    Software Developer
    Inscrit en
    Juin 2005
    Messages
    2 033
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activit� : Software Developer
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 2 033
    Billets dans le blog
    12
    Par d�faut
    Ton probl�me est dans cette ligne, je pense:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    set(MY_HEADER "${CMAKE_SOURCE_DIR}../header")
    CMAKE_SOURCE_DIR n'est pas termin� par '/'.
    Essaie ceci:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    set(MY_HEADER "${CMAKE_SOURCE_DIR}/../header")
    Ensuite, ton CMakeLists.txt est dans le dossier "source"?
    Si vous ne trouvez plus rien, cherchez autre chose...

    Vous trouverez ici des tutoriels OpenGL moderne.
    Mon moteur 3D: Castor 3D, presque utilisable (venez participer, il y a de la place)!
    Un projet qui ne sert � rien, mais qu'il est joli (des fois) : ProceduralGenerator (G�n�ration proc�durale d'images, et post-processing).

  5. #5
    Membre �clair�
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    421
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 421
    Par d�faut
    mon CMakeList n'est pas dans le dossier source.
    J'ai rajout� / apr�s le CMAKE_SOURCE_DIR mais �a n'a rien chang�. J'ai remplac� "/test.hpp" par "test.hpp" idem.

  6. #6
    Expert confirm�

    Avatar de dragonjoker59
    Homme Profil pro
    Software Developer
    Inscrit en
    Juin 2005
    Messages
    2 033
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activit� : Software Developer
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 2 033
    Billets dans le blog
    12
    Par d�faut
    Tu peux montrer l'arborescence de tes dossiers, ainsi que la position de ton CMakeLists.txt dans cette arborescence?
    Si vous ne trouvez plus rien, cherchez autre chose...

    Vous trouverez ici des tutoriels OpenGL moderne.
    Mon moteur 3D: Castor 3D, presque utilisable (venez participer, il y a de la place)!
    Un projet qui ne sert � rien, mais qu'il est joli (des fois) : ProceduralGenerator (G�n�ration proc�durale d'images, et post-processing).

  7. #7
    Membre �clair�
    Homme Profil pro
    Ing�nieur d�veloppement logiciels
    Inscrit en
    Avril 2010
    Messages
    517
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activit� : Ing�nieur d�veloppement logiciels
    Secteur : Sant�

    Informations forums :
    Inscription : Avril 2010
    Messages : 517
    Par d�faut
    Rajoute include_directories(${CMAKE_CURRENT_SOURCE_DIR}/chemin_vers_tes_fichiers_d'entête) dans ton CMakeLists.txt

    Ta variable MY_HEADER sert juste pour la compilation et pour que tes fichiers d'ent�te soient visibles dans certains ide (par exemple avec Visual Studio)

  8. #8
    Expert �minent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 644
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activit� : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 644
    Par d�faut
    Salut,
    D�j�, supprime le / de ta directive #include... #include "/test.hpp" doit devenir #include "test.hpp"Ensuite, pour que cmake ajoute automatiquement une option de compilation d�finissant un dossier dans lequel aller chercher les fichiers d'en-t�te (ce qui correspond � l'option -I sous gcc /clang), il faut utiliser la macro
    include_directories(chemin/vers/dossier/concerné), ce qui, dans ton CMakeLists.txt correspondrait � rajouter une ligne proche deinclude_directories(${CMAKE_SOURCE_DIR}/../header) au plus tard avant ta ligne 20 (ADD_EXECUTABLE(${PROJECT_NAME} ${FICHIERS_SOURCES}))

    Nota: ce n'est qu'un d�tail, mais, g�n�ralement, si on place les fichiers d'en-t�te dans un dossier s�par� des fichiers source, on choisi g�n�ralement le nom "src" pour le dossier contenant les fichiers sources et le nom "include" pour le dossier contenant les fichiers d'en-t�te (les deux �tant au m�me niveau dans l'arborescence), sous une forme proche de
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    root_directory
    |->include
    |    |->header1.hpp
    |    |->header2.hpp
    |    |->header3.hpp
    |->src
    |    |->source1.cpp
    |    |->source2.cpp
    |    |->source3.cpp
    |->CmakeLists.txt
    [EDIT] C'est bel et bien include_directories et non add_subdirectory qu'il faut ajouter
    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

  9. #9
    Expert confirm�

    Avatar de dragonjoker59
    Homme Profil pro
    Software Developer
    Inscrit en
    Juin 2005
    Messages
    2 033
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activit� : Software Developer
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 2 033
    Billets dans le blog
    12
    Par d�faut
    Citation Envoy� par koala01 Voir le message
    Ensuite, pour que cmake ajoute automatiquement une option de compilation d�finissant un dossier dans lequel aller chercher les fichiers d'en-t�te (ce qui correspond � l'option -I sous gcc /clang), il faut utiliser la macro
    add_subdirectory(chemin/vers/dossier/concerné), ce qui, dans ton CMakeLists.txt correspondrait � rajouter une ligne proche deadd_subdirectory(${CMAKE_SOURCE_DIR}/../header) au plus tard avant ta ligne 20 (ADD_EXECUTABLE(${PROJECT_NAME} ${FICHIERS_SOURCES}))[/CODE]
    Pas add_subdirectory, mais include_directories (comme l'a indiqu� darkman19320).
    Si vous ne trouvez plus rien, cherchez autre chose...

    Vous trouverez ici des tutoriels OpenGL moderne.
    Mon moteur 3D: Castor 3D, presque utilisable (venez participer, il y a de la place)!
    Un projet qui ne sert � rien, mais qu'il est joli (des fois) : ProceduralGenerator (G�n�ration proc�durale d'images, et post-processing).

  10. #10
    Membre �clair�
    Homme Profil pro
    Ing�nieur d�veloppement logiciels
    Inscrit en
    Avril 2010
    Messages
    517
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activit� : Ing�nieur d�veloppement logiciels
    Secteur : Sant�

    Informations forums :
    Inscription : Avril 2010
    Messages : 517
    Par d�faut
    Citation Envoy� par koala01 Voir le message
    Salut,
    Ensuite, pour que cmake ajoute automatiquement une option de compilation d�finissant un dossier dans lequel aller chercher les fichiers d'en-t�te (ce qui correspond � l'option -I sous gcc /clang), il faut utiliser la macro
    add_subdirectory(chemin/vers/dossier/concerné)
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    root_directory
    |->include
    |    |->header1.hpp
    |    |->header2.hpp
    |    |->header3.hpp
    |->src
    |    |->source1.cpp
    |    |->source2.cpp
    |    |->source3.cpp
    |->CmakeLists.txt
    La macro add_subdirectory n�cessite un CMakeLists.txt dans le dossier point� (cf: la doc).

  11. #11
    Expert �minent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 644
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activit� : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 644
    Par d�faut
    Citation Envoy� par darkman19320 Voir le message
    La macro add_subdirectory n�cessite un CMakeLists.txt dans le dossier point� (cf: la doc).
    Oui, au temps pour moi... Je me suis rendu compte de mon erreur avant de lire ton message : je voulais parler de la macro include_directories (j'ai modifi� mon message en cons�quence )
    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

Discussions similaires

  1. R�cup�rer les paths des fichiers d'un dossier
    Par damdam44 dans le forum Entr�e/Sortie
    R�ponses: 2
    Dernier message: 03/06/2008, 16h07
  2. PATH des fichiers en local
    Par T@rka dans le forum Applets
    R�ponses: 2
    Dernier message: 21/02/2008, 18h00
  3. [gcc] ajouter un chemin relatif a des fichiers header
    Par wodel dans le forum Autres �diteurs
    R�ponses: 4
    Dernier message: 12/11/2007, 13h54
  4. Charger le path des fichiers properties
    Par yanis97 dans le forum Langage
    R�ponses: 1
    Dernier message: 30/11/2006, 20h54
  5. R�ponses: 9
    Dernier message: 25/09/2005, 16h33

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