我有一个动态库,根据配置而有不同的名称,由CMake脚本指定:
set_target_properties(${name} PROPERTIES OUTPUT_NAME ${outputName}64)
set_target_properties(${name} PROPERTIES DEBUG_OUTPUT_NAME ${outputName}64_d)
最终结果是,我的发行版和调试版的名称不同。我想将生成的库作为后构建步骤复制到另一个目录中,但是CMake-Fu的祝福并没有对我生效。
我尝试了这样做:
GET_TARGET_PROPERTY(origfile mylibrary LOCATION)
STRING(REGEX REPLACE "/" "\\\\" origfile ${origfile})
set(targetfile my_target_path\\${CMAKE_CFG_INTDIR}\\)
STRING(REGEX REPLACE "/" "\\\\" targetfile ${targetfile})
add_custom_command(TARGET mylibrary POST_BUILD
COMMAND copy ${origfile} ${targetfile}
)
这对于发布版本运行良好,但对于调试,源代码没有包含我预期的“_d”。
如何获取目标的输出路径,以便我可以复制该文件?
注意: 如上面的片段所示,目前这是针对Windows/Visual Studio的,但我希望这也适用于OS X/Xcode/make。
注意: 我需要将库放置在额外的目录中,该目录作为几个依赖于此库的其他项目的输出目录,使得这些项目能够在运行时加载库。 另一个可接受的解决方案是能够创建一个自定义目标来进行复制,以便其他项目可以依赖于此项目,而此项目则依赖于该库。