CMake learning (3) - Utilisez add_subdirectory() pour ajouter un dossier de projet externe

        Dans des circonstances normales, chaque sous-projet de notre projet se trouve dans un répertoire racine général du projet, mais parfois, nous devons utiliser des dossiers externes. Que devons-nous faire ? Par exemple, cxx/utility/exampledans un répertoire CMakeLists.txt, vous souhaitez faire référence au répertoire supérieur cxx/utility: CMakeLists.txtgénéralement
Insérer la description de l'image iciInsérer la description de l'image ici
        , si cxx/utility/exampledans un répertoire CMakeLists.txtvous l'utilisez directement.

add_subdirectory(${
    
    CMAKE_CURRENT_SOURCE_DIR}/..)

        Une fois exécuté cmake -B build, une erreur sera signalée :

CMake Error at CMakeLists.txt:14 (add_subdirectory):
  add_subdirectory not given a binary directory but the given source
  directory "D:/workspace/sdk/base/cxx/utility" is not a subdirectory of
  "D:/workspace/sdk/base/cxx/utility/example".  When specifying an
  out-of-tree source a binary directory must be explicitly specified.

        Raison de l'erreur : Parce que le dossier à ajouter n'est pas un sous-répertoire du projet en cours. La dernière phrase montre la voie : pour spécifier un dossier externe, vous devez le spécifier explicitement. Mais comment le préciser explicitement ? Consultez la documentation officielle.
Insérer la description de l'image ici        Il s'avère add_subdirectoryqu'il existe un autre binary_dirparamètre, qui est utilisé pour spécifier source_dirl'emplacement dans le dossier de sortie. S'il n'est pas spécifié, source_dirla valeur est utilisée. binary_dirCeci doit être précisé si vous souhaitez ajouter un dossier externe . cxx/utility/exampleLes changements à l'intérieur CMakeLists.txtsont :

add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/.. 3rdparty/base/utility)

        Après l'exécution, cmake -B buildvous pouvez trouver des sous-répertoires supplémentaires dans le répertoire de sortie , qui est spécifié par 3rdparty/base/utilityle deuxième paramètre :binary_dir
Insérer la description de l'image ici

Je suppose que tu aimes

Origine blog.csdn.net/hezhanran/article/details/123896355
conseillé
Classement