如何使用CMake安装脚本?

Mat*_*ice 3 install cmake deb cpack

我有一个构建多个可执行文件并安装它们的项目。对于可执行文件,相关的CMake代码为:

add_executable(foo "foo.cpp")
add_executable(bar "bar.cpp;qux.cpp")
install(TARGETS foo bar "/usr/bin")
Run Code Online (Sandbox Code Playgroud)

然后,我创建了一个.deb包,当它安装,我可以运行foo,并bar通过命令行。我想做这样的事情:

add_executable(foo "foo.cpp")
add_executable(bar "bar.cpp;qux.cpp")
add_script(hello "hello.sh")
install(TARGETS foo bar hello)
Run Code Online (Sandbox Code Playgroud)

...因此可以hello从命令行执行。但是实际上并没有一个名为的CMake命令add_script。我该如何实现?

Mic*_*opp 7

您可以使用

install(PROGRAMS hello.sh DESTINATION bin RENAME hello)
Run Code Online (Sandbox Code Playgroud)

这将自动使您的脚本可执行。请参阅文档以了解install(FILES)

PROGRAMS表单与FILES表单相同,除了已安装文件的默认权限还包括OWNER_EXECUTE,GROUP_EXECUTE和WORLD_EXECUTE。此表单旨在安装非目标程序,例如shell脚本。


Mat*_*ice 5

我以为这很简单,结果却很难搜索:

install(FILES "hello.sh"
    PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
    DESTINATION "bin"
    RENAME "hello")
Run Code Online (Sandbox Code Playgroud)