我的 CMake 库,MyLibrary
,具有依赖性OtherLibrary
,我用一个导入非标准 FindOtherLibrary.cmake
.
我的图书馆取决于OtherLibrary
公开:
target_link_libraries(MyLibrary PUBLIC OtherLibrary::OtherLibrary)
当我安装时MyLibrary
(和...一起MyLibraryConfig.cmake
),并且用户想要链接到它,因此他们需要导入OtherLibrary
.
关于如何分发有好的做法吗FindOtherLibrary.cmake
along MyLibrary
?
理想情况下,可以让用户的事情变得更加容易MyLibrary
通过导入OtherLibrary
自动从安装的配置文件MyLibraryConfig.cmake
,如果它包含类似的东西
include(CMakeFindDependencyMacro)
find_dependency(OtherLibrary)
并且知道在哪里FindOtherLibrary.cmake
is.
这是可能吗?
我最终找到了我的问题的解决方案。
原则上,它按照@utopia的建议进行操作,但是以自动化的方式:我的库的最终用户不需要设置(甚至不需要知道)FindOtherLibrary.cmake
。它将自动导入MyLibraryConfig.cmake
.
为此,我安装FindOtherLibrary.cmake
along MyLibraryConfig.cmake
:
install(FILES
/path/to/MyLibraryConfig.cmake
DESTINATION
lib/cmake/MyLibrary
)
install(FILES
/path/to/FindOtherLibrary.cmake
DESTINATION
lib/cmake/MyLibrary/Modules
)
And in MyLibraryConfig.cmake
我设置了如何导入它:
include(CMakeFindDependencyMacro)
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_LIST_DIR}/Modules/")
find_dependency(OtherLibrary REQUIRED)
请注意,我设置了变量CMAKE_MODULE_PATH
因为不可能指定查找模块的位置find_package
or find_dependency
(仅适用于配置模式)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)