没有出现cmake / cpack组件的debuginfo rpm包

时间:2018-03-01 01:26:16

标签: c++ cmake rpm cpack

CentOS6.9 / cmake 3.6.1

在我的项目中,我正在尝试创建几个组件,而不是为它们构建运行时,开发和调试包,但是我无法为每个组件生成超过一个rpm。我创建了一个小项目来展示问题:

./包括/ Box.hpp

namespace room {

class Box {
public:
    Box(int volume);
    int get_volume() const;
private:
    int m_volume;
};

}

./源/ Box.cpp

#include "Box.hpp"

namespace room {

Box::Box(int volume)
    : m_volume(volume)
{
}

int Box::get_volume() const
{
    return this->m_volume;
}

}

./源/ 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。我查看了文档,无法找到我错在哪里。有人可以向我澄清一下吗?感谢您的任何建议。

1 个答案:

答案 0 :(得分:1)

<强>摘要

您的示例通常有效,您可能只需要更新CMake版本。

详情

我无法使用我的Ubuntu 14.04.5 LTS和CMake 3.10.2重现您的问题。生成了CMakeLists.txt

在我给出的例子中,我注意到了三件事:

  1. CPACK_RPM_DEBUGINFO_PACKAGE中引入了CMake Version 3.7。因此cmake_minimum_required(VERSION 3.7) 的第一行应该是:

    CPACK_BUILD_SOURCE_DIRS

    有关在Linux上将CMake更新为最新版本的更多详细信息,请参阅"ccmake using cmake version 3.10"

    如果您想找到支持某项功能的最低版本 - 由于这不是CMake官方文档的一部分,请参阅"Finding which CMake version a feature was introduced in"

  2. 文档说变量rpm是必需的。如果我添加以下行,我会删除很多set(CPACK_BUILD_SOURCE_DIRS "${CMAKE_SOURCE_DIR}") 代警告:

    debuginfo
  3. elfutils包装依赖于sudo apt-get install elfutils 包。所以我不得不这样做:

    sudo scripts/historian-scripts/root_install_mongo_ubuntu.sh