Cmake 说服CPack在/usr/share下正确安装共享只读数据
我正在配置CMake/CPack来安装一个附带一些只读共享数据文件的应用程序。我的理解是,根据,这些文件应该存储在Cmake 说服CPack在/usr/share下正确安装共享只读数据,cmake,cpack,fhs,Cmake,Cpack,Fhs,我正在配置CMake/CPack来安装一个附带一些只读共享数据文件的应用程序。我的理解是,根据,这些文件应该存储在/usr/share下,最好是存储在特定于应用程序的目录(例如/usr/share/My_project)下,而不是直接存储在/usr/share下。我使用GNUInstallDirs试图保持(我的理解)FHS的期望,使用以下内容: #... include(GNUInstallDirs) # BAD: Installs files from ${CMAKE_CURRENT_SO
/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}"
)
#...
每件事都按文件记录的方式进行;我的问题是:
/usr/share/my_项目下
安装(目录…
中使用的类型数据是否错误?也就是说,我应该将所有数据复制到${CMAKE\u CURRENT\u BINARY\u DIR}/${PROJECT\u NAME}
,然后使用安装(目录${CMAKE\u CURRENT\u BINARY\u DIR}/${PROJECT\u NAME}类型数据)
。那似乎是浪费
类型数据
是使用安装(目录…
的正确方法吗?或者我仍然需要使用明确指定的目的地
我想这是询问
GNUInstallDirs
和TYPE DATA
是否适合使用,是否与FHS兼容的好方法。我的主要目标是让CMake/CPack将东西放在它们应该居住的地方,而不需要明确指定每个平台安装程序的正确位置。“我是否正确理解FHS(理想情况下)我应该将应用程序的共享只读数据放在/usr/share/My_项目下?”-根据您参考的FHS文档,FHS建议使用/usr/share
下的子目录,但不要求它是my_project
。要使用类型数据
您可以将CMAKE\u INSTALL\u DATAROOTDIR
设置为子目录,或者安装目录${CMAKE\u CURRENT\u SOURCE\u DIR}/my\u project
(最后一个组件相应命名,并且不终止//code>)。听起来像set(CMAKE\u INSTALL\u DATADIR)${CMAKE\u INSTALL\u DATADIR}/${PROJECT_NAME}
可能是最干净的解决方案;我没有想到要改变这一点。我理解终止/
复制目录内容而不复制基本目录;这在这方面类似于rsync
。“我对FHS的理解正确吗(理想情况下)我应该将应用程序的共享只读数据放在/usr/share/my_项目下吗?“-根据您参考的FHS文档,FHS建议使用/usr/share
下的子目录,但不要求它是my_project
。要使用类型数据
,您可以将CMAKE_INSTALL_DATAROOTDIR
设置为子目录,或安装目录${CMAKE_CURRENT_SOURCE_DIR}”/my_项目
(最后一个组件的名称与之对应,并且没有终止/
)。听起来像是集(CMAKE_INSTALL_DATADIR“${CMAKE_INSTALL_DATADIR}/${project_NAME})
可能是最干净的解决方案;我没有想到要改变这一点。我理解终止/
复制目录内容而不复制基本目录;在这方面类似于rsync
。