[英]How does CMake's export know what version the target is?
我正试图做一个图书馆。 我的CMakeLists.txt看起来像这样:
add_library(Lib STATIC)
set_target_properties(Lib PROPERTIES
VERSION 0.1)
export(TARGETS Lib
FILE ${BIN_DIR}/LibConfig.cmake)
当外部项目使用此库时,CMake将显示错误:
CMake Error at CMakeLists.txt:10 (find_package):
Could not find a configuration file for package "Lib" that is
compatible with requested version "0.1".
The following configuration files were considered but not accepted:
some directory/Lib/bin/LibConfig.cmake, version: unknown
查看生成的LibConfig.cmake,除了它不携带版本信息外,没有什么错。
为了允许CMake确定库的版本,您需要创建一个LibConfigVersion.cmake
文件。
可以在CMake文档中找到一个示例: 生成软件包文件
对于您的库,结果如下:
add_library(Lib STATIC)
set_target_properties(Lib PROPERTIES VERSION 0.1)
export(TARGETS LibFILE ${BIN_DIR}/LibConfig.cmake)
include(CMakePackageConfigHelpers)
write_basic_package_version_file(${BIN_DIR}/LibConfigVersion.cmake
VERSION 0.1
COMPATIBILITY SameMajorVersion)
可以多次在project
命令中设置一次,而不是多次提供版本信息:
project(Lib VERSION 0.1)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.