CMake の依存関係管理: ソース、ライブラリ、および CMakeLists.txt
CMake で、ソース ファイル、ライブラリ、および CMakeList 間の依存関係を管理する.txt により、適切に構造化された効率的なプロジェクトが保証されます。この記事では、複数のライブラリと実行可能ファイルを含む複雑なプロジェクトの依存関係を効果的に処理する戦略について説明します。
ローカルの依存関係: 利点
ローカルの依存関係を設定すると、以下を指定することで依存関係の管理が簡素化されます。各サブディレクトリの CMakeLists.txt 内のソース レベルとリンク レベルでの依存関係。このアプローチにより、明確な階層が提供され、無関係な依存関係を除外することで不必要な肥大化が回避されます。
サンプル プロジェクト構造と CMakeLists.txt
相互接続されたライブラリと実行可能ファイルを含むプロジェクトを考えてみましょう。
Lib - LibA - CMakeLists.txt - Src - a.cc - Inc - a.h - LibB - CMakeLists.txt - Src - b.cc - Inc - b.h - LibC - CMakeLists.txt - Src - c.cc - Inc - c.h App1 - CMakeLists.txt - Src - main.cc
ライブラリ CMakeLists.txt (LibA、LibB、LibC)
include_directories(Inc ../LibC/Inc) add_subdirectory(../LibC LibC) add_library(LibA Src/a.cc Inc/a.h) target_link_libraries(LibA LibC) include_directories(Inc) add_library(LibB Src/b.cc Inc/b.h) include_directories(Inc ../LibB/Inc) add_subdirectory(../LibB LibB) add_library(LibC Src/c.cc Inc/c.h) target_link_libraries(LibC LibB)
App1 CMakeLists.txt
cmake_minimum_required(VERSION 2.8) project(App1 CXX) file(WRITE "Src/main.cc" "#include \"a.h\"\n#include \"b.h\"\nint main()\n{\na();\nb();\nreturn 0;\n}") ... include_directories(../Lib/LibA/Inc ../Lib/LibB/Inc) add_subdirectory(../Lib/LibA LibA) add_subdirectory(../Lib/LibB LibB) add_executable(App1 Src/main.cc) target_link_libraries(App1 LibA LibB)
ライブラリ依存関係グラフ
このプロジェクトの依存関係グラフ: App1 ->リバ -> LibC -> LibB App1 -> LibB
複数の依存関係を管理するための戦略
複数の依存関係を管理するには、いくつかのアプローチが存在します。
ベスト プラクティス
以上がCMake で依存関係を効果的に管理する方法: ローカル依存関係、ライブラリ ターゲット、およびプロジェクト構造に関するガイドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。