首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >cmake:"make“和"make”的区别

cmake:"make“和"make”的区别
EN

Stack Overflow用户
提问于 2019-04-11 23:47:37
回答 1查看 6.7K关注 0票数 0

我正在使用CMake生成我的makefile。我的可部署目标是一个RPM,这一切都工作得很好。根据文件系统指南,我的RPM安装到

代码语言:javascript
复制
/opt/mytool
    /bin - executables
    /lib64 - libraries
/etc/opt/mytool - configuration files

RPM由CPack使用make package构建。

在开发测试期间,我不想安装RPM。它需要提升特权,并将任何给定的机器一次限制为一个(开发人员)版本。在完成所有RPM操作之前,我能够“安装”并创建一个简单的install树,如下所示:

代码语言:javascript
复制
install
    /opt/mytool
        bin
        lib64

但是,将配置文件引入不同的位置已经使工作变得复杂起来。我想把这个扩大到包括

代码语言:javascript
复制
install
    /etc/opt/mytool

但没有它我还能活下去。不幸的是,当我尝试make install时,我得到了以下错误:

代码语言:javascript
复制
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文件的违规部分是

代码语言:javascript
复制
install(FILES ${PROJECT_SOURCE_DIR}/../Config/mytool.cfg
    DESTINATION /etc/opt/mytool
)

我看过CMake rpm在/etc/init.d中安装一个文件,但是我的RPM构建得很好(而且我使用的是CMake 3)

make installmake package之间有什么区别(我可以推断后者正在运行CPack,而且运行得很好)?如何创建开发安装树?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-04-12 05:13:58

这两个构建目标的不同之处在于,在您的情况下,package创建了一个RPM文件,而install将提供给install()命令的资源复制到提供给DESTINATION参数的位置:

目的地 指定要将文件安装到磁盘上的目录。如果给出一个完整的路径(带有前导斜杠或驱动器号),则直接使用它。如果给出了相对路径,则将相对于前缀变量的值进行解释。可以使用前缀变量文档中解释的DESTDIR机制在安装时重新定位前缀。

指定将文件复制到显然没有写入权限并遇到引用错误的/etc/opt/mytool

解决这个问题有两个选项,第二个选项显然是首选的,因为它允许每个开发人员提供他们自己的系统本地设置,在那里临时安装dev文件:

  • 设置具有写入权限的DESTINATION路径
  • 设置一个相对路径并使用附加参数调用cmake,以指定开发安装树的位置:
代码语言:javascript
复制
cmake -H<source path> -B<build path> -DCMAKE_INSTALL_PREFIX=<install path>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55642624

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档