[CMake] Copying some files using CMake

Stormwind Dev stormwind.dev at googlemail.com
Thu Dec 23 11:53:23 EST 2010


Thanks for your reply John. There is one question left about your 
GetRuntime module. The files you copy are located within the CMake 
directory in your root source dir, right?

Best Michael
Am 23.12.2010 17:28, schrieb John Drescher:
> On Thu, Dec 23, 2010 at 11:18 AM, Stormwind Dev
> <stormwind.dev at googlemail.com>  wrote:
>> Dear List,
>>
>> I've got a question on copying some files from one directory to another
>> using CMake.
>>
>> Let's say, I got some libraries collected in a special directory. I want
>> CMake to copy these libs to the distribution directory of my project. Using
>> add_custom_command, I managed to have CMake copy my .exe to the distribution
>> directory, but when I try to do this for my libraries something goes
>> terribly wrong.
>>
>> add_custom_command( TARGET MagicRPG POST_BUILD
>>         COMMAND copy \"$(TargetPath)\" .\\dist\\bin )
>>
>> is what I did to copy my exe. When I use this
>>
>> add_custom_command( TARGET MagicRPG POST_BUILD
>>         COMMAND copy \"$(TargetPath)\" \"${SDKS_BASE_DIR}/SDL/lib/SDL.dll\"
>> .\\dist\\bin)
>>
>> to get SDL.dll copied to dist/bin Visual Studio fails with message
>>
>> Fehler    1    error MSB3073: Der Befehl "copy
>> "D:\Projekte\cpp\games\Magic\bin\Debug\MagicRPG.exe"
>> "D:/SDKs/SDL/lib/SDL.dll" .\dist\bin
>> if errorlevel 1 goto VCReportError
>> :VCEnd" wurde mit dem Code 1 beendet.    C:\Program Files
>> (x86)\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppCommon.targets    113    6
>>   MagicRPG
>>
>> Can anybody please help me with the right syntax for copying multiple files
>> at POST_BUILD?
>>
> Attached are 3 CMake modules I use for this. One is a macro that
> builds a batch file that ends up being a target in visual studio.
>
> I put them in a CMake folder inside my root source folder and have the
> following line in my main CMakeLists.txt
>
> include(${PROJECT_SOURCE_DIR}/CMake/GetRuntime.cmake)
>
> this brings in the macro with support for generating the batch file
> and GetRuntime target.
>
> Then later in the main CMakeLists.txt file I use the other two modules.
>
> FIND_PACKAGE( Qt4 REQUIRED )
> set(QT_USE_QTNETWORK true)
> set(QT_USE_QTSQL true)
> set(QT_USE_QTXML true)
> INCLUDE( ${QT_USE_FILE} )
> include(${PROJECT_SOURCE_DIR}/CMake/GetQtRuntime.cmake)
> 	
> IF(USE_QWT)
> FIND_PACKAGE(Qwt REQUIRED)
> INCLUDE_DIRECTORIES(${QWT_INCLUDE_DIR})
> include(${PROJECT_SOURCE_DIR}/CMake/GetQwtRuntime.cmake)
> set (UPMC_EXTERNAL_LIBS ${UPMC_EXTERNAL_LIBS} ${QWT_LIBRARIES})
> ENDIF(USE_QWT)
>
> John



More information about the CMake mailing list