我正在从手写的Makefile重写库到使用cmake。我正陷入需要从库B库库A库的地步。
我可以使用find_package找到这些库,但是当它们被链接时,cmake抱怨没有构建.so文件的规则,因为它在构建目录中寻找它而不是安装目录。
如果我查看包含此硬编码路径的/usr/lib/cmake/library/libraryConfigVersion.cmake文件,则会对此进行解释。此文件是使用以下步骤创建的:
write_basic_package_version_file(
"${CMAKE_CURRENT_BINARY_DIR}/libraryConfigVersion.cmake"
VERSION ${LIBRARY_VERSION}
COMPATIBILITY AnyNewerVersion
)
export(EXPORT libraryTargets
FILE "${CMAKE_CURRENT_BINARY_DIR}/library/libraryConfigVersion.cmake"
NAMESPACE library::
)
(我已将我的图书馆名称替换为' library')。如何让cmake编写正确的路径,以便我可以轻松地从其他cmake项目链接到我的库?
答案 0 :(得分:0)
命令export实际上导出构建树。这在文档中明确写出。
对于导出安装树,请使用install(TARGETS ... EXPORT)
加install(EXPORT)
。这两个流程都在install命令的文档中描述。
另见CMake教程Exporting and Importing Targets。