我的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
答案 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)
此外,您无需进行任何复制。