我应该将 .cmake 文件安装到 share/cmake 还是 lib/cmake 目录中?

5
在这个问题的答案中:Where should cmake files be installed?,我们了解到,在CMake的搜索模式方面,“可接受”的安装.cmake文件的位置包括<prefix>/share/(可能还有子目录),或者是<prefix>/lib/cmake
一方面,那里被接受的答案建议使用<prefix>/lib/cmake;但另一方面,大多数Linux发行版捆绑的CMake本身将它的.cmake文件放在/usr/share/cmake下。
那么哪个选项更好呢?或者说,哪个是你知道的最常用的?
PS- 如果您使用GNUInstallDirs,则选择在${CMAKE_INSTALL_LIBDIR}/cmake${CMAKE_INSTALL_DATADIR}/cmake之间,这也许更适用于多平台。
1个回答

1
我认为这取决于.cmake文件:
  • 对于在CMake项目中用于导入库的.cmake文件,我会将.cmake文件放在<prefix>/lib/cmake
  • 对于可能用作提供宏的.cmake文件,就像在/usr/share/cmake中提供的CMake模块一样,我更愿意使用<prefix>/share/myapp
理由是/usr/lib应该用于存储特定于平台的信息,而/usr/share用于平台无关数据。这是 文件系统层次结构标准中指定的:

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

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


但是CMake捆绑的许多.cmake脚本,位于/usr/share下,都是特定于平台的。CMake并不区分这一点。此外,.cmake文件在很大程度上或根本不具有架构相关性(例如,没有特定于架构编译部分的库,以及特别是仅包含C ++头文件的库)。 - einpoklum

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接