【发布时间】:2015-12-25 19:48:19
【问题描述】:
我正在尝试编写一个CMakeLists.txt,它将作为构建后事件所需的dlls 从外部库复制到构建后可执行文件所在的文件夹。我正在开发的操作系统是 Win7 和 VS2010。
有很多外部库,所以我不想在CMakeLists.txt 中单独列出它们。我目前的解决方案是使用文件通配符并为每个库创建一个构建后事件:
FILE(GLOB files "${LIBRARY_DIR}/lib/$(ConfigurationName)/*dll")
MESSAGE("FILE LIST IS: ${files}")
FOREACH(file ${files})
ADD_CUSTOM_COMMAND(
TARGET mylib
POST_BUILD
COMMENT "Copying dll ${file}..."
COMMAND ${CMAKE_COMMAND} -E copy ${file} "${CMAKE_BINARY_DIR}/$(ConfigurationName)/"
)
ENDFOREACH()
基本上,如果我将$(ConfigurationName) 替换为Release 或Debug,则上面截取的代码可以工作文件。但是,我想从依赖于 Release 或 Debug 构建模式的相应目录中获取库。在上面的代码中,$(ConfigurationName) 不会被 Visual Studio 构建模式所取代。我猜这是因为这是一个在 cmake 生成时未知的 VS2010 变量。
有人知道如何解决这个问题吗?
【问题讨论】:
-
不就是
$(Configuration)而不是$(ConfigurationName)吗?
标签: c++ windows visual-studio-2010 cmake