gpt4 book ai didi

c++ - CMake 的导出如何知道目标是什么版本?

转载 作者:行者123 更新时间:2023-11-28 04:35:06 25 4
gpt4 key购买 nike

我正在尝试制作一个图书馆。我的 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 文档中找到示例:generating package files

对于您的图书馆,这会产生如下结果:

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)

关于c++ - CMake 的导出如何知道目标是什么版本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51699512/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com