CMakeを使用して、C++プロジェクトとそれが使用するライブラリ間の単純な依存関係を設定しようとしています。
設定は次のとおりです
プロジェクト自体には、Dependency
からのヘッダーを含むソースファイルが含まれており、実行可能ファイルをビルドするときに、Dependency
の静的ライブラリにリンクする必要があります。
これまでのところ、これを機能させることができますが、Dependency
の_CMakeLists.txt
_ファイルでProject
のインクルードディレクトリを手動で指定する必要があります。これを自動的に引き出したいので、find_package()
コマンドを使用して成功を制限し、さらに複雑にするオプションを検討しました。
私がやりたいのは、Dependency
の前にProject
を構築し、ライブラリに対するProject
リンクを作成し、そのインクルードディレクトリを作成することだけです。これを達成する簡単で簡潔な方法はありますか?
私の現在のCMakeファイル:
Project
、ファイル_CMakeLists.txt
_:
_cmake_minimum_required (VERSION 2.6)
project (Project)
include_directories ("${PROJECT_SOURCE_DIR}/Project")
add_subdirectory (Dependency)
add_executable (Project main.cpp)
target_link_libraries (Project Dependency)
add_dependencies(Project Dependency)
_
Dependency
、ファイル_CMakeLists.txt
_:
_project(Dependency)
add_library(Dependency SomethingToCompile.cpp)
target_link_libraries(Dependency)
_
CMake 2.8.11
を使用できますtarget_include_directories
。単にDEPENDENCYプロジェクトにこの関数を追加し、メインプロジェクトに表示するインクルードディレクトリに入力するだけです。 CMakeは残りを気にします。
プロジェクト、CMakeLists.txt:
cmake_minimum_required (VERSION 2.8.11)
project (Project)
include_directories (Project)
add_subdirectory (Dependency)
add_executable (Project main.cpp)
target_link_libraries (Project Dependency)
依存関係、CMakeLists.txt
project (Dependency)
add_library (Dependency SomethingToCompile.cpp)
target_include_directories (Dependency PUBLIC include)
何をしたいのか、なぜProjectとDepencyを別々にビルドする必要があるのかは明確ではありません。
あなたの例では私の最初は
プロジェクトでは、CMakeLists.txt
DEPENDENCYでは、CMakeLists.txt