настройка скриптов запуска в CMake - PullRequest
0 голосов
/ 31 мая 2018

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

вот упрощенная структура каталогов

/etc/configfile
/etc/xgd/autostart/runfile.Desktop
/usr/local/sbin/startscript
/usr/local/bin/binaryfile
/usr/local/share/project/main.glade
/usr/local/share/project/button.png

будет настроен сценарий выполненияиспользуя

configure_file(conf/config.h.in ${CMAKE_CURRENT_BINARY_DIR}/config.h)

и установлен с использованием

#copy sbin files
file(GLOB SBINFILES ${CMAKE_CURRENT_BINARY_DIR}/${SBINDIR}/*.sh)

# install scripts
install(FILES ${SBINFILES}
        PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
        DESTINATION ${SBINDIR} 
        COMPONENT binary)

, и он содержит следующий текст

#!/bin/bash
# ###############################################
# runscript for my program
# date: 2018/05/21
# ###############################################

export G_MESSAGES_DEBUG=all
export LOGFILE=~/.logfile.log
pushd ${BINDIR}
${BINDIR}/${PROJECTNAME} 1>> $LOGFILE 2>> $LOGFILE
popd

хорошо, это работает, пока я пытаюсь установить в / usr/ local / share, но при установке с использованием

make DESTDIR=./dist install

все еще настроен / usr / local / bin / binaryfile, что логично, но не то, что я хочу ..

Есть ли способдобавить этот destdir в конфигурацию cmake?

1 Ответ

0 голосов
/ 31 мая 2018

DESTDIR нельзя добавить в конфигурацию CMake , поскольку на этом этапе она неизвестна: переменная известна только при install step.

Сценарии (и исполняемые файлы), предоставляемые проектом, могут быть готовы к установке с

make DESTDIR=<...> install

с использованием относительных путей к другим компонентам :

# From /usr/local/sbin/startscript execute /usr/local/bin/binaryfile.
../bin/binaryfile 1>> $LOGFILE 2>> $LOGFILE

Когда этонеобходимо, относительные пути могут быть преобразованы в абсолютные, используя readlink:

# From /usr/local/sbin/startscript execute /usr/local/bin/binaryfile
# using its absolute path
BINDIR=`readlink -f ../bin/`

pushd ${BINDIR}
${BINDIR}/${PROJECTNAME} 1>> $LOGFILE 2>> $LOGFILE
popd
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...