Компонент cmake / cpack Пакет debuginfo rpm не отображается

CentOS6.9 / cmake 3.6.1

В моем проекте я пытаюсь создать несколько компонентов, а не создавать пакеты runtime, devel и debuginfo для них, но я не смог произвести более одного об / мин для каждого компонента. Я создал небольшой проект, чтобы показать проблему:

./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 »], а в «debuginfo» — нет. Я посмотрел на документацию и не смог понять, где я ошибаюсь. Может ли кто-нибудь объяснить мне это? Спасибо за любые предложения.

9

Решение

Резюме

Ваш пример в целом работает, возможно, вам просто нужно обновить версию CMake.

Детали

Я не смог воспроизвести вашу проблему с моими Ubuntu 14.04.5 LTS и CMake 3.10.2. Eсть ./BUILD/home-devel-debuginfo.rpm генерироваться.

Итак, три вещи, которые я заметил на вашем примере:

  1. CPACK_RPM_DEBUGINFO_PACKAGE был введен в CMake версия 3.7. Итак, первая строка вашего CMakeLists.txt должно быть:

    cmake_minimum_required(VERSION 3.7)
    

    Подробнее об обновлении вашего CMake до последней версии в Linux смотрите msgstr «ccmake using cmake version 3.10».

    Если вы хотите узнать, какая версия CMake является минимальной для поддержки определенной функции (поскольку это не является частью официальной документации CMake), см. «Поиск версии CMake, в которой была представлена ​​функция».

  2. В документации написано, что переменная CPACK_BUILD_SOURCE_DIRS является обязательным. И если я добавлю следующую строку, я избавлюсь от многих rpm предупреждения поколения:

    set(CPACK_BUILD_SOURCE_DIRS "${CMAKE_SOURCE_DIR}")
    
  3. Была зависимость упаковки debuginfo к elfutils пакет. Итак, я должен был сделать:

    sudo apt-get install elfutils
    
1

Другие решения

Других решений пока нет …