cmake - 如何在 CMake 中安装时使用版本号重命名/修改目标文件?

标签 cmake installation version lib kdevelop

我正在使用 CMake-3.13.4 和 KDevelop-5.2.1。

我有一个最顶层的 CMakeLists.txt,它定义了我的目标的版本号。
看起来像:

set( PROJECT_VERSION_MAJOR 1 )
set( PROJECT_VERSION_MINOR 4 )
set( PROJECT_VERSION_PATCH 7 )
...
add_executable( mytarget main.cpp XXX.cpp ... )
target_link_libraries( mytarget "stdc++fs" ${CMAKE_THREAD_LIBS_INIT} ... )
install( TARGETS mytarget RUNTIME DESTINATION . )

我希望 CMake 自动将版本字符串附加到目标的文件名。所以我编码如下:
install( TARGETS mytarget RUNTIME DESTINATION . RENAME "mytarget-${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH}" )

但它不起作用。

有没有办法用CMake来完成?
我最终想要的文件名是“mytarget-1.4.7”。

最佳答案

您正在寻找房产 OUTPUT_NAME .

add_executable( mytarget main.cpp XXX.cpp ... )
target_link_libraries( mytarget "stdc++fs" ${CMAKE_THREAD_LIBS_INIT} ... )
set_target_properties( mytarget PROPERTIES OUTPUT_NAME "mytarget-${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH}" ) 
install( TARGETS mytarget RUNTIME DESTINATION . )

关于cmake - 如何在 CMake 中安装时使用版本号重命名/修改目标文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57055857/

相关文章:

c++ - 如何使用调试标志构建OpenCV

installation - 无法安装 SQL Server 2008 R2 Express

pdf - 如何获得扩展的pdf版本

delphi - 如何在一个地方为多个应用程序定义应用程序版本?

cmake - 我可以在 cmake 时获取 CMake 为特定 vcproj 生成的 GUID 吗?

cmake - 为什么 CMake 变量区分大小写而命令不区分大小写?

c++ - CMake add_compile_options 在适当的时候会影响链接器选项吗?

installation - 具有每个用户和管理员部分的 Windows 安装程序

php - 在 Windows 上安装后无法运行 pear 命令

Java 运行时不符合分发条件