CMake et absolue de l'en-tête chemins
Je suis en train d'utiliser CMake pour construire mon projet de C++ et j'ai un problème dans l'en-tête chemins.
Depuis que j'utilise beaucoup de classes organisées dans plusieurs répertoires, tous mes incluent les déclarations sont avec des chemins absolus (donc pas besoin d'utiliser "../../"), mais lorsque vous essayez de faire le CMake-Makefile, il ne fonctionne tout simplement pas.
Personne ne sait comment les spécifier dans CMakeLists.txt que tous le sont avec des chemins absolus?
Ma sortie lors de la tentative de faire
~/multiboost/BanditsLS/GenericBanditAlgorithmLS.h:45:25: Utils/Utils.h: No such file or directory
~/multiboost/BanditsLS/GenericBanditAlgorithmLS.h:46:35: Utils/StreamTokenizer.h: No such file or directory
Mon CMakeLists.txt fichier :
#The following command allows the use of the "file" command
cmake_minimum_required(VERSION 2.6)
#The declaration of the project
project(multiboost)
#This allows recursive parsing of the source files
file(
GLOB_RECURSE
source_files
*
)
list(REMOVE_ITEM source_files ./build/* )
#This indicates the target (the executable)
add_executable(
multiboost
${source_files} #EXCLUDE_FROM_ALL build/
)
- pouvez-vous prvodie un petit exemple (source/en-tête/cmake)? aussi, des chemins absolus sont généralement une mauvaise idée. La plus belle façon de le faire est de l'omi, la manière par exemple de stimuler t-il: indiquez une seule racine qui se trouve dans le chemin du compilateur et de commencer à partir de là.
- Oui, exactement, ce que je suis en train de faire : Dire que j'ai src/ dir qui contient tous les sous-dossiers de la source ainsi que le fichier principal. Dans tous mes incluent les déclarations, je n'ai qu'à spécifier le chemin d'accès de la src/. Dans mon projet XCode, il fonctionne très bien mais je n'ai pas encore comment le faire dans CMake. (Merci pour votre réponse ;o) )
- ouais mais nous avons encore besoin d'un exemple + plus d'info ("il n'a tout simplement pas de travail" est aussi énigmatique qu'une description de l'erreur peut obtenir, ne nous dites pas n'importe quoi)
- Aparté: Ne pas utiliser une boule de construire votre liste de fichiers. Spécifier à la main. Ceci est important car il vous oblige à modifier
CMakeLists.txt
lorsque vous ajoutez/supprimez un fichier, forçantcmake
pour ré-exécuter lorsque vous exécutezmake
. Si vous ne le faites pas, les nouvelles ou les fichiers supprimés ne seront pas ramassés, conduisant à la rupture.
Vous devez vous connecter pour publier un commentaire.
Vous besoin de quelque chose comme cela dans CMakeLists.txt:
définir le bon chemin: supposons que votre Utils répertoire /exp/appstat/benbou/multiboost, puis cmake (bon en fait, gcc) a savoir ceci:
ou il peut être plus pratique de passer cela comme une option qui est passé sur la ligne de commande: