在CMake中配置运行脚本

时间:2018-05-31 10:33:41

标签: shell cmake directory

我有一个项目,包括几个文件,如二进制文件,配置文件,启动停止脚本等。

这是一个简化的目录结构

/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 :(得分:1)

DESTDIR无法加入CMake 配置,因为在该阶段尚不知道:该变量仅在 install 步骤中已知。

项目提供的脚本(和可执行文件)可以随时使用

进行安装
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