[CMake] Copying of 3rd party DLLs in a POST-BUILD step

Michael Stürmer m.stuermer at pmdtec.com
Mon Jan 9 04:05:00 EST 2012


I have found some topics related to my issue on the web, but none so far helped me to fix it:
 
I use Visual Studio 2010 on Windows 7 64Bit.
 
During my build, all binaries are collected in one folder, which makes it easier for me to debug the project. But to be able to run the program actually, I have to copy several dlls (like Qt, openCV etc.) into the folder for the program to find them. Putting the libraries in the system path is not an option for me, as I switch between 32- and 64-bit on the same system.
 
I managed to locate the folder where the dlls are (using some CMake-Variables) and using a custom command like
 
ADD_CUSTOM_COMMAND( TARGET CopyDlls POST_BUILD
                COMMAND copy "${DLL_3RD}/*.dll"  "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/$<CONFIGURATION>"
                COMMENT "copying dlls ."
                )
 
This copies ALL dlls from the ${DLL_3RD} folder to the binary folder, for Qt that would be the relase as well as the debug libraries.
 
Now my question:
 
I would like to only copy those dlls I need, i.e. I have to determine somehow if I'm in debug or release mode and select the appropriate libraries by adding "d" for debug versions. For openCV I need "opencv_core231.dll" in release and "opencv_core231d.dll" in debug mode. Does anyone have a solution/workaround/idea for this problem?
 
Best regards,
Michael
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.cmake.org/pipermail/cmake/attachments/20120109/7facdb58/attachment-0001.htm>


More information about the CMake mailing list