代码之家  ›  专栏  ›  技术社区  ›  Arthur Tacca wim

cmake:如何将函数添加到已安装的配置中?

  •  0
  • Arthur Tacca wim  · 技术社区  · 6 年前

    我正在创建一个我正在用cmake构建和安装的库。在 CMakeLists.txt install(TARGETS mylib ...) 安装库本身并 install(EXPORT ...) 创建cmake配置。cmake配置意味着可以使用 find_package() 通过希望使用自己的库的应用程序 cmakelists.txt文件 . 到目前为止,没什么奇怪的。

    但除此之外我还有 useful_fn.cmake 它包含一个有用的cmake函数,我希望它对应用程序可用。 cmakelists.txt文件 . 我可以手动安装 install(FILE useful_fn.cmake) 但是应用程序如何知道在哪里找到它?可以从配置中引用它吗?

    更好的是,cmake配置是否可以直接包含已安装的版本?所以只是跑步 find_package(mylib) 提供对此cmake函数的访问?如果我手动编写整个mylib-config.cmake,而不是让cmake像当前那样生成它,我可以这样做,但我真的不想这样做,因为这样我可以添加一行( include(.../usefulfn.cmake) )

    2 回复  |  直到 6 年前
        1
  •  1
  •   Tsyvarev    6 年前

    XXXConfig.cmake

    • XXXConfigTargets.cmake install(EXPORT)
    • XXXConfigVersion.cmake write_basic_package_version_file()

    这些脚本包含在 xxx配置.cmake 脚本 手写 ,您可以在其中定义其他内容:

    # File: XXXConfig.cmake
    
    include(${CMAKE_CURRENT_LIST_DIR}/XXXConfigVersion.cmake)
    include(${CMAKE_CURRENT_LIST_DIR}/XXXConfigTargets.cmake)
    # Here you may provide additional functions and other things.
    function(my_func)
      ...
    endfunction()
    

    更多信息请参见 CMake packaging documentation .

        2
  •  1
  •   J-Christophe    6 年前

    为了进一步澄清,有一个模块可以帮助您配置有效和可重定位的配置文件。

    参见宏 configure_package_config_file 由提供 CMakePackageConfigHelpers 模块。

    正如@tsyvarev提到的, XXXConfig.cmake 文件仍应手动写入,但配置了 配置_package_config_文件 而不是 configure_file .