簡體   English   中英

CMake的導出如何知道目標是哪個版本?

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM