[英]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.