cmake la portée des variables, 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 ne add_subdirectory(src)
et, plus tard, je ne 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...
Vous devez vous connecter pour publier un commentaire.
Comme mentionné dans la documentation de la ensemble de commande, chaque répertoire ajouté avec
add_subdirectory
ou chaque fonction déclarée avecfunction
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 avec le
set
commande ne sera visible que dans l'enfant, à moins que lePARENT_SCOPE
option est utilisée.Pour faire de la
SOURCEFILES
affectation visible dans le dossier racine de votre projet, essayez de:${CMAKE_CURRENT_SOURCE_DIR}/foo.cpp
au lieu de seulementfoo.cpp
parce que cmake est maintenant à la portée parent.set(VAR value PARENT_SCOPE); set(VAR ${VAR});
set(VAR value PARENT_SCOPE); set(VAR ${VAR});
ne fonctionne pas, cependant,set(VAR value); set(VAR ${VAR} PARENT_SCOPE);
œuvres.get_directory_property(VAR1 DIRECTORY subdir1 DEFINITION VAR1)
ARGV0..N
des paramètres contient encore les anciennes valeurs sur un moment AVANT qu'unadd_subdirectory
appel (ce qui signifie que leadd_subdirectory
dans ce cas n'est pas une fonction), dans le cas où u accroché jusqu'à laadd_subdirectory
par le biais de la une autre fonction et l'appel en_add_subdirectory
. Je pense que c'est important en cas de entièrement compatible mise en œuvre.