CMake:如何将一个目标安装到两个名称不同的地方?

时间:2015-07-25 03:50:13

标签: cmake

我正在开发一个跨平台的音频插件。在MacOSX中,需要将其安装到两个位置:~/Library/Audio/Plug-Ins/Components/并重命名为XXX.component,~/Library/Audio/Plug-Ins/VST/并重命名为XXX.vst。

但是,INSTALL命令的TARGETS模式无法重命名,而FILES模式无法获取目标的真实文件名。

1 个答案:

答案 0 :(得分:2)

您可以使用该目标的属性获取目标的真实文件名:

get_target_property(MY_LIB_PREFIX <my-lib> PREFIX)
get_target_property(MY_LIB_SUFFIX <my-lib> SUFFIX)
set(MY_LIB_FILENAME "${MY_LIB_PREFIX}<my-lib>${SUFFIX}")

然后使用install(FILES ...)命令获取新名称的安装文件。

此外,您可以更改使用其SUFFIX属性构建的目标的扩展名。这允许您使用install(TARGETS ...)命令执行一次安装。其他安装无论如何都需要install(FILES ...)命令。

如果你有3.0版或更高版本的CMake,generator-expressions提供了更简单的方法来获取文件的完整路径::

install(FILES $<TARGET_FILE:my-lib> ...)