代码之家  ›  专栏  ›  技术社区  ›  Henricus V.

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

  •  0
  • Henricus V.  · 技术社区  · 8 年前

    我想建一个图书馆。My CMakeLists.txt的外观如下所示:

    add_library(Lib STATIC)
    set_target_properties(Lib PROPERTIES
        VERSION 0.1)
    export(TARGETS Lib
        FILE ${BIN_DIR}/LibConfig.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,除了没有携带版本信息之外,没有任何错误。

    1 回复  |  直到 8 年前
        1
  •  1
  •   Stanley F.    8 年前

    要允许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)
    
    推荐文章