我正在使用CMake生成我的makefile。我的可部署目标是RPM,并且一切正常。根据文件系统准则,我的RPM安装到
/opt/mytool
/bin - executables
/lib64 - libraries
/etc/opt/mytool - configuration files
CPM使用make package
在开发测试期间,我不想安装RPM。它要求提升的特权,并且一次将任何给定的计算机限制为一个(开发人员)版本。在我完成所有RPM工作之前,我可以“进行安装”并创建一个简单的install
树,如下所示:
install
/opt/mytool
bin
lib64
但是,将配置文件引入其他位置使工作变得很困难。我希望将此范围扩展到
install
/etc/opt/mytool
但是我可以没有它。不幸的是,当我尝试make install
时遇到此错误:
Install the project...
-- Install configuration: "Debug"
CMake Error at cmake_install.cmake:49 (file):
file cannot create directory: /etc/opt/mytool. Maybe need administrative
privileges.
CMakeLists.txt
文件中令人反感的部分是
install(FILES ${PROJECT_SOURCE_DIR}/../Config/mytool.cfg
DESTINATION /etc/opt/mytool
)
我看过CMake rpm installing a file in /etc/init.d,但是我的RPM构建良好(并且我正在使用CMake 3)
make install
和make package
之间有什么区别(我可以推断出后者正在运行CPack,并且可以正常工作)?如何创建开发安装树
答案 0 :(得分:0)
两个构建目标之间的区别在于,package
在您的情况下创建了一个RPM文件,而install
将提供给install()
命令的资源复制到提供给{{ 1}}参数:
目的地
指定文件将在磁盘上的目录 已安装。如果完整路径(带斜杠或驱动器号) 给定它直接使用。如果给出相对路径,则为 相对于CMAKE_INSTALL_PREFIX的值进行解释 变量。可以在安装时使用 CMAKE_INSTALL_PREFIX变量中说明了DESTDIR机制 文档。
您指定将文件复制到DESTINATION
,您显然没有权限,并且遇到引用的错误。
您有两种方法可以解决此问题,第二种方法显然是首选,因为它允许每个开发人员提供他们自己的系统本地设置,用于在其中临时安装开发文件:
/etc/opt/mytool
路径DESTINATION
以指定开发安装树的位置:cmake