没有出现cmake / cpack组件的debuginfo rpm包
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了没有出现cmake / cpack组件的debuginfo rpm包相关的知识,希望对你有一定的参考价值。
CentOS6.9 / cmake 3.6.1
在我的项目中,我正在尝试创建几个组件,而不是为它们构建运行时,开发和调试包,但是我无法为每个组件生成超过一个rpm。我创建了一个小项目来显示问题:
./include/box.红扑扑
namespace room {
class Box {
public:
Box(int volume);
int get_volume() const;
private:
int m_volume;
};
}
./source/box.CPP
#include "Box.hpp"
namespace room {
Box::Box(int volume)
: m_volume(volume)
{
}
int Box::get_volume() const
{
return this->m_volume;
}
}
./source/app.CPP
#include "Box.hpp"
int main() {
room::Box box(5);
return box.get_volume();
}
./C make lists.txt
cmake_minimum_required(VERSION 3.6)
project (home)
set(CMAKE_INSTALL_PREFIX "/usr/local")
set(CMAKE_BUILD_TYPE "RelWithDebInfo")
include_directories("include")
file(GLOB SRC_FILES "source/*.cpp")
file(GLOB HDR_FILES "include/*.hpp")
add_executable(${PROJECT_NAME} ${SRC_FILES})
install(FILES ${HDR_FILES} DESTINATION "include" COMPONENT devel)
install(TARGETS ${PROJECT_NAME} RUNTIME DESTINATION "bin" COMPONENT devel)
set(CPACK_COMPONENTS_ALL devel)
set(CPACK_RPM_PACKAGE_DEBUG 1)
set(CPACK_RPM_COMPONENT_INSTALL ON)
set(CPACK_GENERATOR "RPM")
set(CPACK_RPM_DEVEL_FILE_NAME "${PROJECT_NAME}-devel.rpm")
set(CPACK_RPM_DEVEL_DEBUGINFO_PACKAGE ON)
set(CPACK_RPM_DEVEL_DEBUGINFO_FILE_NAME "${PROJECT_NAME}-devel-debuginfo.rpm")
include(CPack)
安慰:
$ mkdir BUILD && cd BUILD && cmake3 .. && make -j5 && make package
但是在这个动作之后,我看到只有一个'devel'rpm而没有带有debuginfo的rpm。我查看了文档,无法找到我错在哪里。有人可以向我澄清一下吗?谢谢你的任何建议。
答案
摘要
您的示例通常正常,您可能只需要更新您的CMake版本。
细节
我无法用我的Ubuntu 14.04.5 LTS和CMake 3.10.2重现你的问题。生成了./BUILD/home-devel-debuginfo.rpm
。
所以我用你给出的例子注意到了三件事:
CPACK_RPM_DEBUGINFO_PACKAGE
是在CMake Version 3.7引入的。所以你的CMakeLists.txt
的第一行应该是:cmake_minimum_required(VERSION 3.7)
有关将CMake更新到Linux上的最新版本的更多详细信息,请参阅"ccmake using cmake version 3.10"。 如果你想找到哪个CMake版本是支持某个功能的最小版本 - 因为这不是CMake官方文档的一部分 - 请参阅"Finding which CMake version a feature was introduced in"。- 文档说变量
CPACK_BUILD_SOURCE_DIRS
是强制性的。如果我添加以下行,我摆脱了很多rpm
生成警告:set(CPACK_BUILD_SOURCE_DIRS "${CMAKE_SOURCE_DIR}")
- 包装
debuginfo
与elfutils
包装有依赖关系。所以我必须这样做:sudo apt-get install elfutils
以上是关于没有出现cmake / cpack组件的debuginfo rpm包的主要内容,如果未能解决你的问题,请参考以下文章