我正在开发一个跨平台的音频插件。在MacOSX中,需要将其安装到两个位置:~/Library/Audio/Plug-Ins/Components/
并重命名为XXX.component,~/Library/Audio/Plug-Ins/VST/
并重命名为XXX.vst。
但是,INSTALL命令的TARGETS模式无法重命名,而FILES模式无法获取目标的真实文件名。
答案 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> ...)