CMake 学習 (3) - add_subdirectory() を使用して外部プロジェクト フォルダーを追加する

        通常の状況では、プロジェクトの各サブプロジェクトは一般的なプロジェクトのルート ディレクトリにありますが、外部フォルダーを使用する必要がある場合があります。たとえば、ディレクトリcxx/utility/example内でCMakeLists.txt上位ディレクトリを参照したい場合cxx/utilityCMakeLists.txt通常は
ここに画像の説明を挿入しますここに画像の説明を挿入します
        、cxx/utility/exampleディレクトリ内でCMakeLists.txtそれを直接使用します。

add_subdirectory(${
    
    CMAKE_CURRENT_SOURCE_DIR}/..)

        実行するとcmake -B build、エラーが報告されます。

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.

        エラーの理由: 追加するフォルダーが現在のプロジェクトのサブディレクトリではないためです。最後の文は、外部フォルダーを指定するには、それを明示的に指定する必要があることを示しています。しかし、それを明示的に指定するにはどうすればよいでしょうか? 公式ドキュメントを確認してください。出力フォルダー内の場所を指定するために使用される別のパラメーターがあること
ここに画像の説明を挿入します        がわかりました。指定されていない場合は、その値が使用されます。外部フォルダーを追加する場合は、これを指定する必要があります。内部の変更は次のとおりです。add_subdirectorybinary_dirsource_dirsource_dirbinary_dircxx/utility/exampleCMakeLists.txt

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

        実行後、cmake -B build出力ディレクトリに追加のサブディレクトリが表示されます。これは3rdparty/base/utility2 番目のパラメータbinary_dirで指定されます。
ここに画像の説明を挿入します

おすすめ

転載: blog.csdn.net/hezhanran/article/details/123896355