cmake/cpack 组件调试信息 rpm 包未出现
cmake/cpack component debuginfo rpm package doesn't appear
centos6.9/cmake 3.6.1
在我的项目中,我正在尝试创建几个组件,而不是为它们构建运行时,Devel和Debuginfo软件包,但是我无法为每个组件生产多个RPM以上。我创建了小型项目来显示问题:
./include/box.hpp
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();
}
./cmakelists.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版本3.7中引入的。因此,您的CMakeLists.txt
的第一行应该是:cmake_minimum_required(VERSION 3.7)
有关将CMAKE更新为Linux上最新版本的更多详细信息,请参见" CCMAKE使用CMAKE版本3.10"。
如果您想查找哪个CMAKE版本是支持某个功能的最低限度 - 因为这不是CMAKE官方文档的一部分 - 请参阅"查找在哪个CMAKE版本中引入了功能"。
-
文档说可变
CPACK_BUILD_SOURCE_DIRS
是强制性的。如果我添加以下行,我会摆脱很多rpm
的发电警告:set(CPACK_BUILD_SOURCE_DIRS "${CMAKE_SOURCE_DIR}")
-
包装
debuginfo
与elfutils
软件包有依赖性。所以我必须这样做:sudo apt-get install elfutils
- C++:Application.cpp中抛出了未解析的外部符号(解决方案在问题的末尾,供未来的读者参考)
- 编译并运行后,输出未出现在 Visual Studio 代码中
- 我包含了<winuser.h>,但编译器在MonitorFromWindow上抛出"未声明"
- 在编译时,C++项目抛出错误 C2228,这是预期的,因为控件在运行时未达到该点
- C++ 高级代码未给出正确的输出
- 将代码移出类定义时未扩展参数包
- xgboost 构建错误:参数包未扩展为"..":
- 为什么可变参数模板参数包未展开
- 空终止未出现在 strcpy-ing 上的数组中
- cmake/cpack 组件调试信息 rpm 包未出现
- Qt/C++图像未出现在屏幕上
- 可变参数模板:错误:参数包未扩展'...'
- NULL字符未出现在COUT中
- 在文档中引用使用doxygen的结构成员不起作用;结构成员未出现在文档中
- 服务器未收到UDP数据包,花费数小时试图找出问题所在
- libCurl FTP 身份验证数据包未发送
- QT QTableWidget 未出现在 QTabWidget 中
- C++基模板类虚拟方法未出现在派生中?
- HTTP包未发送
- 为什么子控件未出现在 MFC 派生的 CWnd 中