Команда установки cmake/cpack не добавляет мой исполняемый файл в мой пакет deb

У меня возникли проблемы с тем, чтобы убедить cmake/cpack сгенерировать пакет debian, содержащий один исполняемый файл quine, хранящийся в определенной папке с именем /absolute/path.

Согласно https://cmake.org/cmake/help/v2.8.0/cmake.html#command:install Я должен иметь возможность использовать абсолютный путь:

Аргументы DESTINATION указывают каталог на диске, в который будет установлен файл. Если указан полный путь (с косой чертой или буквой диска), он используется напрямую. Если задан относительный путь, он интерпретируется относительно значения CMAKE_INSTALL_PREFIX.

Вот мой файл C quine.c:

char*s="char*s=%c%s%c;main(){printf(s,34,s,34);}";main(){printf(s,34,s,34);}

и мой файл CMakeLists.txt:

cmake_minimum_required(VERSION 2.8)

project(quine)

file(GLOB SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/*.c)

add_executable(quine ${SOURCES})

set(CPACK_GENERATOR "DEB")
set(CPACK_DEBIAN_PACKAGE_MAINTAINER "Nobody")

install(
    TARGETS quine
    RUNTIME DESTINATION /absolute/path
)

include(CPack)

В пустом подкаталоге с именем build я вызываю следующее:

$ cmake ..
$ make package

и полученный пакет имеет длину всего 512 байт, а:

$ dpkg -c quine-0.1.1-Linux.deb

подтверждает, что пакет пуст.

Что я делаю неправильно?


person spierepf    schedule 27.06.2017    source источник
comment
Не могли бы вы попробовать использовать относительный путь назначения? Абсолютные пути установки плохо сочетаются с упаковкой...   -  person Tsyvarev    schedule 27.06.2017
comment
Если я использую относительный путь, исполняемый файл устанавливается под /usr/..., а это не то, что мне нужно. В чем проблема с абсолютными путями и упаковкой?   -  person spierepf    schedule 27.06.2017
comment
Короче говоря, при упаковке все файлы устанавливаются как обычно, но с DESTDIR в качестве корневого каталога. Затем файлы из DESTDIR архивируются в файл пакета. В нете есть несколько тем, попробуйте погуглить. Что касается вашего случая, возможно, установка переменной CPACK_SET_DESTDIR должна помочь, как в stackoverflow.com/questions/6712000/.   -  person Tsyvarev    schedule 27.06.2017
comment
Я просто добавил set(CPACK_SET_DESTDIR true) и set(CPACK_INSTALL_PREFIX /) в свой файл CMakeLists.txt и изменил /specific/dir на specific/dir, и это сработало. Спасибо Цыварев!   -  person spierepf    schedule 27.06.2017