给出CMakeLists.txt
之类:
PROJECT(asdf NONE)
CMAKE_MINIMUM_REQUIRED(VERSION 3.0)
INSTALL(FILES CMakeLists.txt DESTINATION share/doc/asdf/whatever)
SET(CPACK_GENERATOR "DEB")
SET(CPACK_PACKAGE_CONTACT "asdf@example.com")
INCLUDE(CPack)
make package
生成的包具有以下内容:
$ dpkg-deb --contents asdf-0.1.1-Linux.deb
drwx------ root/root 0 2017-12-20 10:50 ./usr/
drwx------ root/root 0 2017-12-20 10:50 ./usr/share/
drwx------ root/root 0 2017-12-20 10:50 ./usr/share/doc/
drwx------ root/root 0 2017-12-20 10:50 ./usr/share/doc/asdf/
drwx------ root/root 0 2017-12-20 10:50 ./usr/share/doc/asdf/whatever/
-rw-r--r-- root/root 235 2017-12-20 10:50 ./usr/share/doc/asdf/whatever/CMakeLists.txt
父目录只有所有者的权限位。如何更正这些以便世界可以读取我安装的文件,例如这些是drwxr-xr-x
而不是?{/ p>
答案 0 :(得分:1)
在与CMake开发人员Nils Gladitz的讨论中,我们能够在影响此问题的环境中跟踪此问题。如果环境中的umask设置为0022
而不是0077
,则make package
会生成具有不同权限的包:
$ dpkg-deb --contents asdf-0.1.1-Linux.deb
drwxr-xr-x root/root 0 2017-12-20 11:17 ./usr/
drwxr-xr-x root/root 0 2017-12-20 11:17 ./usr/share/
drwxr-xr-x root/root 0 2017-12-20 11:17 ./usr/share/doc/
drwxr-xr-x root/root 0 2017-12-20 11:17 ./usr/share/doc/asdf/
drwxr-xr-x root/root 0 2017-12-20 11:17 ./usr/share/doc/asdf/whatever/
-rw-r--r-- root/root 235 2017-12-20 10:50 ./usr/share/doc/asdf/whatever/CMakeLists.txt
Nils指出,这显然是一个陈旧的未解决的问题 [1] [2] 。
谢谢你,Nils! =)