Laz*_*abs 5 cross-platform cmake
我正在使用cmake和cpack来构建我的项目并构建包.我创建我的项目数的可执行文件,让我们给他们打电话EXE1和EXE2.
在创建这些可执行文件的不同版本时,我想命名以反映可执行文件的版本(比方说EXE1_1.0.0).我可以通过执行更改目标的输出名称set_target_properties.
但是,现在在做的时候install,我想创建一个符号链接到这个可执行文件的版本名称,即我想要
bin目录中的"版本化"可执行文件,即EXE1_1.0.0EXE1指向的符号链接EXE1_1.0.0有人可以建议我怎么做吗?
第二个问题是:如何安装配置文件/ etc/MYPROJECT /目录?我需要将什么目的用于配置文件,比如我bin用于可执行文件和lib库?使用绝对路径就像/etccmake可接受的做法一样?
我随后在 cmake 邮件列表上提出了这个问题,这是我收到的回复:
答案的有效性取决于您使用的 CMake 版本以及您想要支持的平台集。
符号链接不太便携
a) 创建可能无法[当前]可移植地完成,但如果您的目标是 Unix,则可以使用 cmake -E create_symlink 来创建一个。
b) 根据您使用的 CPack 生成器和 CMake/CPack 版本
符号链接可能嵌入或不嵌入到包中。即 CPack 2.8.7 之前版本无法创建包含符号链接的 ZIP 存档,CPack 2.8.8 现在可以做到这一点。
然后您可以在安装时使用 install(SCRIPT ... 或 install(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) set(CONFDEST "/etc/${CMAKE_PROJECT_NAME}") else() set(CONFDEST "etc") endif()
安装(FILES yourconffile DESTINATION ${CONFDEST})
| 归档时间: |
|
| 查看次数: |
2592 次 |
| 最近记录: |