如何使用 CMake 安装脚本?

Posted

技术标签:

【中文标题】如何使用 CMake 安装脚本?【英文标题】:How can I use CMake to install a script? 【发布时间】:2017-09-01 14:57:25 【问题描述】:

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

add_executable(foo "foo.cpp")
add_executable(bar "bar.cpp;qux.cpp")
install(TARGETS foo bar "/usr/bin")

然后我创建一个 .deb 包,当它安装时,我可以从命令行运行 foobar。我想做这样的事情:

add_executable(foo "foo.cpp")
add_executable(bar "bar.cpp;qux.cpp")
add_script(hello "hello.sh")
install(TARGETS foo bar hello)

...这样hello 可以从命令行执行。但实际上并没有一个名为 add_script 的 CMake 命令。我怎样才能做到这一点?

【问题讨论】:

【参考方案1】:

你可以使用

install(PROGRAMS hello.sh DESTINATION bin RENAME hello)

这将自动使您的脚本可执行。见the docs for install(FILES):

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

【讨论】:

【参考方案2】:

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

install(FILES "hello.sh"
    PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
    DESTINATION "bin"
    RENAME "hello")

【讨论】:

以上是关于如何使用 CMake 安装脚本?的主要内容,如果未能解决你的问题,请参考以下文章

如何在不再次运行配置脚本/cmake 的情况下修改安装路径

如何在CMake构建中每次运行python脚本?

如何使用 CMake 在 MinGW 上激活 c++11 支持?

如果使用带有 execute_process 命令的 CMake 脚本模式,如何获得彩色控制台输出?

如何构建一个CMake项目(译)

如何在构建之前使CMake运行python脚本,以便为我的项目生成文件以在构建中使用?