c++ - 我应该安装 .cmake 文件来共享/cmake 还是 lib/cmake?
问题描述
在这个问题的答案中:
我们了解到,除其他地方外,将.cmake
文件安装在<prefix>/share/
(可能在其他子目录中)或安装到<prefix>/lib/cmake
.
现在,一方面,那里接受的答案表明偏好<prefix>/lib/cmake
; 但另一方面,与大多数(?)Linux 发行版捆绑在一起的 CMake 本身将其.cmake
文件放在/usr/share/cmake
.
那么哪个选项更可取?或者更确切地说,哪个是您所知道的最常用的?
PS - 如果您使用GNUInstallDirs
,则选择在${CMAKE_INSTALL_LIBDIR}/cmake
vs之间${CMAKE_INSTALL_DATADIR}/cmake
,这可能更适合多平台。
解决方案
我认为这取决于.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 层次结构适用于所有与体系结构无关的只读数据文件。
推荐阅读
- python-3.x - 生成获取模块路径的函数时如何处理异常NameError?
- elasticsearch - 由于 DNS 缓存,使用 Kubernetes 的 Elasticsearch 集群部署问题
- javascript - 是否可以通过 onclick 事件访问函数内部的内容?
- php - 从数据库中检索数据,无需在 Yii 语法中进行硬编码
- php - 任何语言的字母的正则表达式在 php 中都不起作用
- java - 如何检查字符串是否有重复模式?
- html - 如何使某些图像以某些屏幕尺寸显示?
- selenium - 在 Serenity BDD 中,如何解决这个问题?
- pandoc - 将带有 CSS 的 HTML 转换为 Word 文档
- python - 您可以在 Flask/Jinja 中创建组件以插入到各种模板中吗