首页 > 解决方案 > 我应该安装 .cmake 文件来共享/cmake 还是 lib/cmake?

问题描述

在这个问题的答案中:

cmake 文件应该安装在哪里?

我们了解到,除其他地方外,将.cmake文件安装在<prefix>/share/(可能在其他子目录中)或安装到<prefix>/lib/cmake.

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

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

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

标签: c++cmakepackaging

解决方案


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

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

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

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

/usr/share 层次结构适用于所有与体系结构无关的只读数据文件。


推荐阅读