【发布时间】:2012-04-17 03:40:37
【问题描述】:
我有一个动态库,它根据配置获得不同的名称,在 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。 如何获取目标的输出路径以便复制文件?
注意:从上面的 sn-p 可以看出,这是目前适用于 Windows/Visual Studio,但我希望它也适用于 OS X/Xcode/make。
注意:我需要将该库放置在一个额外的目录中,该目录用作依赖该库的其他几个项目的输出目录,以便这些项目能够在以下位置加载该库运行。可以接受的替代解决方案是能够创建一个执行复制的自定义目标,以便其他项目可以依赖此项目,而该项目又依赖于库。
【问题讨论】:
标签: xcode visual-studio cmake post-build-event