2017-03-09 1 views
1

Je voudrais éviter d'écrire toutes les lignes comme:Inclure tous les fichiers CMake contenus dans un dossier

SET (MYPROJECT_CMAKE_MACRO_DIR ${CMAKE_CURRENT_SOURCE_DIR}/cmake) 

INCLUDE (${MYPROJECT_CMAKE_MACRO_DIR}/firstexample.cmake) 
INCLUDE (${MYPROJECT_CMAKE_MACRO_DIR}/secondexample.cmake) 
... 

et comprennent tous les fichiers dans le dossier CMake. Y a-t-il une commande ou un algorithme pour faire cela?

Merci

+0

Avec un bon éditeur comme Sublime ou Kate et un 'ls * cmake' dans votre terminal, vous écrivez ce code en un rien de temps. Ou quelle est votre logique ici? – usr1234567

Répondre

1

Vous pouvez utiliser file(GLOB ...) pour identifier le groupe de fichiers à inclure, puis utiliser une boucle foreach. Par exemple:

file(GLOB cmakeFiles ${MYPROJECT_CMAKE_MACRO_DIR}/*.cmake) 
foreach(cmakeFile ${cmakeFiles}) 
    message("INCLUDE ${cmakeFile}") 
    INCLUDE(${cmakeFile}) 
endforeach(cmakeFile) 

Vous pouvez faire cela en fonction, puis l'utiliser plusieurs fois, cependant, CMakeLists.txt hérite de son contexte parent, donc en général, y compris un fichier à la racine CMakeLists.txt est suffisante.