упаковка программы на c ++ с использованием библиотек boost с cmake / cpack

Я написал простую программу на c ++, использующую boost, которую я хочу развернуть на машинах с той же архитектурой, с любым вкусом linux (на данный момент), в котором могут быть установлены или не установлены некоторые версии boost.
Я новичок в развертывании, но попытался прочитать документы и придумать CMakeLists.txt, который выглядит следующим образом:

cmake_minimum_required(VERSION 2.8)
project( myprog )
FIND_PACKAGE( Boost 1.50 COMPONENTS thread system chrono program_options REQUIRED )
INCLUDE_DIRECTORIES( ${Boost_INCLUDE_DIR} )
add_executable( myprog myprog.cpp )
target_link_libraries( myprog -lpthread -lboost_system -lboost_chrono -lboost_program_options )

INSTALL( TARGETS myprog DESTINATION . )
SET( CPACK_GENERATOR "TGZ")
INCLUDE( CPack )

Все компилируется и работает нормально, но упаковка (make package) упаковывает только исполняемый файл, а не зависимые библиотеки надстройки «.so»

Когда я бегу: ldd myprog
он говорит мне, что это зависит от: linux-vdso.so, libpthread.so, libboost_system.so, libboost_chrono.so, libboost_program_options.so libstdc ++. поэтому libgcc_s.so libc.so librt.so libm.so

Это те общие библиотеки, которые я хочу упаковать (возможно, мне не нужно запаковывать стандартные)

Как я могу сказать cmake получить правильные библиотеки общих объектов и поместить их рядом с исполняемым файлом, чтобы пользователю оставалось только распаковать папку и запустить исполняемый файл без какой-либо установки?

Статическое связывание здесь не вариант, так как у меня будет куча исполняемых файлов, которые будут использовать те же библиотеки наддува, а также могут возникнуть некоторые проблемы с лицензией при статическом связывании с libgcc.

10

Решение

в Ubuntu, возможно, стандартный способ упаковки — следовать правилам DEBIAN:

Вместо перераспределения файлов, укажите зависимость, установив
CPACK_DEBIAN_PACKAGE_DEPENDS, прежде чем включать CPack, посмотрите на это
пример:

https://github.com/thomas-moulard/visp-deb/blob/master/CMakeModules/CPackConfigDeb.cmake

dpkg автоматически установит зависимые пакеты.

0

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


По вопросам рекламы [email protected]