【问题标题】:Where to install FindLib.cmake在哪里安装 FindLib.cmake
【发布时间】:2017-08-08 09:21:41
【问题描述】:

我正在创建一个库(称为 fmi2),我打算将它安装在我的本地计算机上(通过包管理器),然后链接到一堆其他库。

我将提供一个 Findfmi2.cmake 文件,以便我可以从我的其他库中调用 find_package(fmi2),但是该文件通常应该安装在哪里?

以下是我考虑过的一些选择及其问题:

  • /usr/share/cmake-3.8/Modules/Findfmi2.cmake
    • 优势:find_package(fmi2) 可以正常工作
    • 缺点:仅适用于一个版本的 cmake
  • /usr/share/cmake/Modules/Findfmi2.cmake
    • 优点:适用于任何版本的 cmake
    • 缺点:这不是默认文件夹。我们需要添加set(CMAKE_MODULES_PATH /usr/share/cmake/Modules),这会破坏任何可移植性。
  • ${CMAKE_CURRENT_SOURCE_DIR}/cmake/Findfmi2.cmake
    • 优点:便携,只需要加set(CMAKE_MODULES_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake)
    • 缺点:不是系统范围的。需要手动将此文件添加到使用它的每个库中。这会复制我框架中的文件。

【问题讨论】:

  • 前段时间我有一个similar question,很想听听您的问题的答案!

标签: cmake


【解决方案1】:

您正在 CMake 中创作内容。您不需要 FindModule。旨在查找外部非 CMake 输出。

This Stackoverflow post from ruslo 应该可以帮助您了解find_package() 模块模式和配置模式之间的区别。它还回答了您关于 FindModules 路径的问题,即它们被复制到您的 CMake 项目中,而不是在系统范围内发现,除非它们是“Modules”目录中与 CMake 捆绑的官方 FindModules 的一部分。

现代 CMake 文档现在终于包含了创建配置模式包的好示例:cmake-packages

如果您想要明确的完整示例,尽管对 config.cmake 文件使用稍旧的语法,但 ruslo 在Github 上有更多内容。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-21
    • 2020-09-27
    相关资源
    最近更新 更多