82 votes

cmake variable scope, add_subdirectory

J'ai un CMakeLists.txt dans mon projet, racine et un dans mon /dossier src. L'un dans l' /src dossier ne contient qu'une variable avec le .fichiers cpp (set (SOURCEFILES main.cpp foo.cpp)) et dans la racine CMakeLists.txt je n' add_subdirectory(src) et, plus tard, je n' add_executable(MyApp ${SOURCEFILES}).

Mais cmake me donne l'erreur

add_executable appelée avec un nombre incorrect d'arguments, pas de sources fourni

Comment puis-je obtenir cmake pour voir la variable? J'ai lu que cmake ne connaît que des variables globales, mais ça n'est évidemment pas le cas...

127voto

sakra Points 13373

Comme mentionné dans la documentation de l' ensemble de la commande, chaque répertoire ajouté avec add_subdirectory ou chaque fonction déclarée avec function crée un nouveau champ d'application.

La nouvelle enfant hérite de toutes les définitions de variables à partir de son parent. Affectations de variables dans le nouvel enfant sope avec l' set commande ne sera visible que dans l'enfant, à moins que l' PARENT_SCOPE option est utilisée.

Pour faire de l' SOURCEFILES affectation visible dans le dossier racine de votre projet, essayez de:

set (SOURCEFILES main.cpp foo.cpp PARENT_SCOPE) 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X