web-dev-qa-db-fra.com

CMAKE ajouter un sous-répertoire qui n'est pas un sous-répertoire sur le vrai répertoire

Est-il possible d'inclure le répertoire frère comme sous-répertoire dans cmake?

Quelque chose comme

A 
  CMakeLists.txt

B
  CMakeLists.txt

et B inclut A comme sous-répertoire?

38
Vivek Goel

C'est possible, mais peut-être pas recommandé ...

Vous pouvez utiliser la forme à deux arguments de la commande add_subdirectory pour ajouter le répertoire de votre choix en tant que "sous" répertoire:

add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/../A ${CMAKE_CURRENT_BINARY_DIR}/A)

Le deuxième argument du formulaire à deux arguments spécifie où placer le répertoire binaire pour le sous-répertoire ajouté.

Vous devez juste faire attention à ce qu'il n'y ait pas aussi un autre sous-répertoire réel de B qui est également nommé "A" et qui est également add_subdirectory'd ... Parce que si vous le faites, alors ce serait une erreur, car CMake ne peut pas avoir deux répertoires source différents mappant dans le même répertoire de génération.

81
DLRdave

Malheureusement non.

Comme solution, je peux vous suggérer d'ajouter add_subdirectory (A) et add_subdirectory (B) au niveau supérieur et de définir les variables que vous souhaitez exporter depuis A avec PARENT_SCOPE. Cela permettrait à B/CMakeLists.txt d'accéder aux variables définies dans A/CMakeLists.txt

2
arrowd