我正在使用CMake生成我的makefile。我的可部署目标是一个RPM,这一切都工作得很好。根据文件系统指南,我的RPM安装到
/opt/mytool
/bin - executables
/lib64 - libraries
/etc/opt/mytool - configuration filesRPM由CPack使用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在/etc/init.d中安装一个文件,但是我的RPM构建得很好(而且我使用的是CMake 3)
make install和make package之间有什么区别(我可以推断后者正在运行CPack,而且运行得很好)?如何创建开发安装树?
发布于 2019-04-12 05:13:58
这两个构建目标的不同之处在于,在您的情况下,package创建了一个RPM文件,而install将提供给install()命令的资源复制到提供给DESTINATION参数的位置:
目的地 指定要将文件安装到磁盘上的目录。如果给出一个完整的路径(带有前导斜杠或驱动器号),则直接使用它。如果给出了相对路径,则将相对于前缀变量的值进行解释。可以使用前缀变量文档中解释的DESTDIR机制在安装时重新定位前缀。
指定将文件复制到显然没有写入权限并遇到引用错误的/etc/opt/mytool。
解决这个问题有两个选项,第二个选项显然是首选的,因为它允许每个开发人员提供他们自己的系统本地设置,在那里临时安装dev文件:
DESTINATION路径cmake,以指定开发安装树的位置:cmake -H<source path> -B<build path> -DCMAKE_INSTALL_PREFIX=<install path>https://stackoverflow.com/questions/55642624
复制相似问题