0

最新の CMake ガイドライン (たとえば、 https://www.slideshare.net/DanielPfeifer1/effective-cmake、特にスライド 46 を参照)に従ってPkgConfig.cmakePkg.

Pkgは に依存しFoo、 は に依存しBarます。どちらFooBar設定ファイルも持っていません - むしろ私はそれらを見つけるために使用FindFoo.cmakeしています。FindBar.cmake

私のPkgConfig.cmakeファイルは次のようになります

set(Pkg_LIBRARIES Pkg::Pkg)

include(CMakeFindDependencyMacro)

find_dependency(Foo)  # Use FindFoo.cmake find and import as target Foo::Foo
                      # Foo depends on Bar which is similarly imported using
                      # FindBar.cmake as target Bar::Bar

include("${CMAKE_CURRENT_LIST_DIR}/PkgTargets.cmake")

私の結果PkgTargets.cmakeは次のようになります

add_library(Pkg::Pkg STATIC IMPORTED_
set_target_properties(Pkg::Pkg PROPERTIES
  INTERFACE_LINK_LIBRARIES "Foo::Foo")

# Load information for each installed configuration
.
.
.

Pkg私の質問は、他のパッケージがプロジェクトにインポートされるのを避けるにはどうすればよいFooですBarか?

変数andまたはのいずれかを介してFooおよびパッケージの場所を再度指定する必要がある場合、推移的な依存関係を構築する目的を無効にしませんか?BarFoo_ROOTBar_ROOTCMAKE_PREFIX_PATH

私の Pkg は、それが見つかった場所を既に知っているので、それを解析/設定Foo_ROOTしてファイルBar_ROOTに入れる必要がありますか?PkgConfig.cmake

4

1 に答える 1