【问题标题】:Should I install .cmake files to share/cmake or lib/cmake?我应该安装 .cmake 文件来共享/cmake 还是 lib/cmake?
【发布时间】:2020-01-04 10:32:16
【问题描述】:

在这个问题的答案中:

Where should cmake files be installed?

我们了解到,除其他地方外,将.cmake 文件安装在<prefix>/share/ 下(可能在其他子目录中)或<prefix>/lib/cmake 下是“可接受的”(就CMake 的搜索模式而言)。

现在,一方面,那里接受的答案表明偏爱<prefix>/lib/cmake;但另一方面,与大多数 (?) Linux 发行版捆绑在一起的 CMake 本身将其 .cmake 文件放在 /usr/share/cmake 下。

那么哪个选项更可取?或者更确切地说,您知道哪个是最常用的?

PS - 如果您使用GNUInstallDirs,则可以在${CMAKE_INSTALL_LIBDIR}/cmake${CMAKE_INSTALL_DATADIR}/cmake 之间进行选择,这可能更适合多平台。

【问题讨论】:

    标签: c++ cmake packaging


    【解决方案1】:

    我认为这取决于.cmake 文件:

    • 对于用于在 cmake 项目中导入库的.cmake 文件,我会将.cmake 文件放在<prefix>/lib/cmake
    • 对于可用于提供宏的.cmake 文件,就像/usr/share/cmake 中提供的cmake 模块一样,我宁愿使用<prefix>/share/myapp

    理由是/usr/lib 应该用于存储平台特定信息,而/usr/share 用于存储平台无关数据。这是Filesystem Hierarchy Standard中指定的内容:

    应用程序可以使用 /usr/lib 下的单个子目录。如果应用程序使用子目录,则所有 应用程序专门使用的依赖于体系结构的数据必须放在该子目录中。

    /usr/share 层次结构适用于所有只读架构独立的数据文件。

    【讨论】:

    • 但是许多与 CMake 捆绑在一起的 .cmake 脚本,在 /usr/share 下,是特定于平台的。 CMake 没有做出这种区分。此外,.cmake 文件不是非常依赖于体系结构,或者根本不依赖于体系结构(例如,没有特定于体系结构的编译部分的库,特别是 C++ 仅头文件库)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-16
    • 2016-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-04
    • 1970-01-01
    相关资源
    最近更新 更多