2012-04-18 40 views
5

我使用cmake并cpack建立我的项目,并建立包他们的链接。我创建我的项目数的可执行文件,我们姑且称之为EXE1EXE2cmake的:安装可执行文件,并创建

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

然而,现在在做一个install的时候,我想要做的创建符号链接到可执行的这个版本的名字,也就是我想有

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

可有人建议我如何做这个?

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

+0

你应该通过发布给你的CMake的邮件列表上的答案在这里回答你自己的问题。 – Fraser 2012-04-20 22:45:59

+0

谢谢你指出这一点。 – Lazylabs 2012-04-24 11:45:16

回答

3

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

答案的有效性将取决于CMake的版本,您使用 并设置平台的要支持。

符号链接都不是便携式

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

b)取决于您使用的CPack生成器和CMake/CPack版本
符号链接可能嵌入或不包含在软件包中。

即CPack预2.8.7不能创建一个包含 符号链接CPack 2.8.8现在可以做的是ZIP压缩文件。

然后你可以使用一个安装(脚本...或安装(CODE ...)这样做 在安装时。

另一种选择,如果你正在使用RPM是使用特定的后封装 安装脚本。cpack --help变量 CPACK_RPM_POST_INSTALL_SCRIPT_FILE

这最后的解决方案将关闭过程仅适用于CPack RPM工作。

对于第二个问题

你可以使用绝对目标路径,它们应该仅仅由CPack DEB和RPM来处理 ,我不知道其他。

如果你的软件应该被安装在Windows上,这将不会工作 与档案生成器(ZIP,TGZ等)和/或NSIS。

可能是你可以这样做:

如果(UNIX和不是苹果)设置(CONFDEST “的/ etc/$ {CMAKE_PROJECT_NAME}”) 其他()设置(CONFDEST “ETC”)ENDIF()

安装(FILES yourconffile DESTINATION $ {} CONFDEST)