【问题标题】:cmake: install executables and create links to themcmake:安装可执行文件并创建指向它们的链接
【发布时间】:2012-04-18 11:50:56
【问题描述】:

我正在使用 cmake 和 cpack 来构建我的项目和构建包。我正在我的项目中创建一些可执行文件,我们称它们为 EXE1EXE2

当创建这些可执行文件的不同版本时,我想命名以反映可执行文件的版本(比如说EXE1_1.0.0)。我可以通过set_target_properties 更改目标的输出名称。

但是,现在在执行install 时,我想创建一个指向可执行文件版本名称的符号链接,即我想要

  • 安装在bin 目录中的“版本化”可执行文件,即EXE1_1.0.0
  • 创建指向“版本化”可执行文件的符号链接,即创建符号链接EXE1,它指向EXE1_1.0.0

有人可以建议我怎么做吗?

第二个问题是: 如何安装配置文件 /etc/MYPROJECT/ 目录?我需要将什么 DESTINATION 用于配置文件,例如我将 bin 用于可执行文件,将 lib 用于库?在 cmake 中使用像 /etc 这样的绝对路径是可接受的做法吗?

【问题讨论】:

  • 您应该通过在 CMake 邮件列表上发布给您的答案来回答您自己的问题。
  • 感谢您指出这一点。

标签: cross-platform cmake


【解决方案1】:

我后来在 cmake 邮件列表上问了这个问题,这是我收到的回复:

答案的有效性取决于您使用的 CMake 版本 以及您要支持哪组平台。

符号链接不是那么便携

a) 创建可能 [当前] 无法便携完成,但如果您是 针对 Unix,您可以使用 cmake -E create_symlink 创建一个。

b) 取决于您使用的 CPack 生成器和 CMake/CPack 版本
符号链接可以嵌入到包中,也可以不嵌入。

即CPack pre 2.8.7 无法创建包含 符号链接 CPack 2.8.8 现在可以做到这一点。

然后您可以使用 install(SCRIPT ... 或 install(CODE ...) 来执行此操作 在安装时。

如果您使用 RPM,另一种选择是使用特定于包的帖子 安装脚本。 cpack --帮助变量 CPACK_RPM_POST_INSTALL_SCRIPT_FILE

这最后一个解决方案当然只适用于 CPack RPM。

第二个问题

您可以使用绝对目标路径,它们应该只处理 CPack DEB 和 RPM 很好,其他我不知道。

如果您的软件应该安装在 Windows 上,这是行不通的 带有存档生成器(ZIP、TGZ 等)和/或 NSIS。

也许你可以这样做:

if(UNIX AND NOT APPLE) set(CONFDEST "/etc/${CMAKE_PROJECT_NAME}") else() set(CONFDEST "etc") endif()

安装(FILES yourconffile DESTINATION ${CONFDEST})

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多