У меня возникли проблемы с тем, чтобы убедить 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
подтверждает, что пакет пуст.
Что я делаю неправильно?
/usr/...
, а это не то, что мне нужно. В чем проблема с абсолютными путями и упаковкой? - person spierepf   schedule 27.06.2017set(CPACK_SET_DESTDIR true)
иset(CPACK_INSTALL_PREFIX /)
в свой файлCMakeLists.txt
и изменил/specific/dir
наspecific/dir
, и это сработало. Спасибо Цыварев! - person spierepf   schedule 27.06.2017