如何将DLL从库复制到cmake中的可执行输出目录?

时间:2015-08-21 21:36:01

标签: cmake

我的CMakeLists.txt使用add_library(MyLib SHARED ${files})创建了多个库,生成的库最终位于<root>/build/libs/MyLib/[Debug|Release]/ 其中root是主CMakeLists.txt所在的目录。

如何将MyLib.dll复制到add_executable将.exe文件放入CMake的目录中?请注意,根据构建类型,复制的.dll是Debug或Release下的.dll非常重要。这可能吗?

root/
|_ build/
|  |_ Debug/
|  |  |_ MyApp.exe
|  |  |_ MyLibd.dll (copied from MyLib/Debug)
|  |_ Release/
|  |  |_ MyApp.exe
|  |  |_ MyLib.dll (copied from MyLib/Release)
|  |_ libs/
|     |_ MyLib/
|        |_ Debug/
|        |  |_ MyLibd.dll
|        |_ Release/
|           |_ MyLib.dll
|_ libs/
|  |_ MyLib/
|     |_ MyLib.cpp
|     |_ MyLib.hpp
|     |_ CMakeLists.txt
|_ CMakeLists

1 个答案:

答案 0 :(得分:0)

我建议您使用以下行将所有生成的.lib/.dll/.exe放入给定的文件夹,无论构建模式(调试版或发行版,x86或x64)是什么:

set( CMAKE_RUNTIME_OUTPUT_DIRECTORY -some-folder- )
set( CMAKE_LIBRARY_OUTPUT_DIRECTORY -some-folder- )
set( CMAKE_ARCHIVE_OUTPUT_DIRECTORY -some-folder- )

已更新:有了这个,您可以直接使用

链接它们
target_link_libraries(app *.lib)

此外,您无需进行任何复制。