cmake:安装可执行文件并创建指向它们的链接

时间:2012-04-18 11:50:57

标签: cross-platform cmake

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

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

但是,现在在进行install时,我想创建一个符号链接到这个可执行文件的版本名称,即我想拥有

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

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

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

1 个答案:

答案 0 :(得分:3)

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

  

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

     

符号链接不是那么便携

     

a)创作可能不是[目前]可移植,但如果你是   以Unix为目标,您可以使用cmake -E create_symlink创建一个。

     

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

     

即。 CPack pre 2.8.7无法创建包含的ZIP存档   符号链接CPack 2.8.8现在可以做到。

     

然后你可以使用安装(SCRIPT ...或安装(CODE ...)来做到这一点   在安装时。

     

如果您使用RPM,另一个选择是使用特定于程序包的帖子   安装脚本。 cpack --help-variable   CPACK_RPM_POST_INSTALL_SCRIPT_FILE

     

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

第二个问题

  

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

     

如果您的软件应该安装在Windows上,这将无法正常工作   使用归档生成器(ZIP,TGZ等)和/或NSIS。

     

可能你可以这样做:

     

if(UNIX AND NOT APPLE)设置(CONFDEST“/ etc / $ {CMAKE_PROJECT_NAME}”)   else()设置(CONFDEST“etc”)endif()

     

安装(FILES yourconffile DESTINATION $ {CONFDEST})