1

我正在配置 CMake/CPack 以安装一个附带一些只读共享数据文件的应用程序。我的理解是,根据FHS,此类文件应存储在/usr/share理想情况下应存储在特定于应用程序的目录(例如 /usr/share/my_project)中,而不是直接存储在/usr/share. 我GNUInstallDirs试图通过以下方式保持在 FHS 的期望范围内(我的理解):

#...

include(GNUInstallDirs)

# BAD: Installs files from ${CMAKE_CURRENT_SOURCE_DIR}/data
# into /usr/share
install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/data/"
  TYPE DATA
)

# GOOD: Installs files from ${CMAKE_CURRENT_SOURCE_DIR}/data
# into /usr/share/${PROJECT_NAME}
install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/data/"
  DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/${PROJECT_NAME}"
)

#...

一切都按照记录进行;我的问题是:

  1. 我是否正确理解 FHS(理想情况下)我应该将我的应用程序的共享只读数据放在下面/usr/share/my_project
  2. 如果是这样的话,我是不是用TYPE DATA错了INSTALL(DIRECTORY ...)?也就是说,我应该复制所有数据${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}然后使用INSTALL(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME} TYPE DATA). 这似乎是一种浪费。
  3. 否则,如果我误解了这种类型的数据应该安装在哪里,它应该放在哪里,并且是TYPE DATA正确的使用方式install(DIRECTORY ...)?还是我还需要使用明确指定的DESTINATION

我想这是询问是否适合用途并与 FHS 兼容GNUInstallDirs的好方法。TYPE DATA我的主要目标是让 CMake/CPack将东西放在它们应该存在的地方,而无需为每个平台的安装程序明确指定正确的位置。

4

0 回答 0