(Wow, Eric, I didn't know about CMAKE_CFG_INTDIR!  Seems like you are teaching 
me all kinds of things this week...)


It sounds like what you are missing is having the command executed by Visual 
Studio, so it can do the substitution of the $(Configuration) variable, which 
is why you need to use the add_custom_command() function.



As a side note, I've had to deal with this problem before and have handled it 
in a couple of different ways, depending on what I was trying to accomplish:

  1) Finding DLLs -- for UnitTests that are run automatically, I write scripts 
ahead of time into directories for each configuration type which append the 
paths where various 3rd Party DLLs are stored, then execute those scripts as 
part of a post build event to run the UnitTest.

  2) Test Data -- I use one of two methods:

    a) Copy all the data into each of the configuration directories ahead of 
time (by iteration over CMAKE_CONFIGURATION_TYPES).  This saves needing to copy 
the identical file from a source data directory to a binary directory over and 
over each time I build.

    b) I change the executable so I can pass it a data directory to read from.  
This saves making many copies of identical data for each different 
configuration type.

Hope that helps!


Aaron Meadows


-----Original Message-----
From: [email protected] [mailto:[email protected]] On Behalf Of 
Eric Noulard
Sent: Friday, February 10, 2012 2:42 AM
To: Stefan Fendt
Cc: [email protected]
Subject: Re: [CMake] Copying Files into build-dir under Visual Studio vs. 
Codeblocks/Win32 vs. Codeblocks/Linux

2012/2/10 Stefan Fendt <[email protected]>:
> Hi,
>
> I'm (still) quite unsure if this isn't an FAQ (or if not maybe should 
> be one), but I have read through everything I could google-up 
> regarding this topic and found nothing usable...
>
> I'm writing an x-platform-project which will be compiled using 
> different compilers and or under different systems... for this project 
> I am required to move some files from some location (source/data) into 
> the build-directory. Whileas this works under Linux/Codeblocks/GCC as 
> well as Windows/Codeblocks/MinGW it doesn't for Visual Studio... Under 
> Visual Studio the files always are copied to some directory-location 
> directly above the actual binary-directory.
>
> I've tried using ${CMAKE_CURRENT_BINARY} and it copies the files to 
> the marked position:
>
> build/                        <--- copies  into this directory 
> build/Debug build/Release build/source
>
> After that I tried to do it with GET_TARGET_PROPERTY(... PROPERTY 
> LOCATION). I then get something like this...
>
> 'build/$(Configuration)'
>
> ...which of course doesn't solve the problem, too... because the 
> configuration under Visual Studio is only known after CMake-Generation 
> of the solution and running the compiler...
>
> So, what is the suggested method of (if you can't avoid it) copying 
> files from anywhere into the build-directory, which is as compiler 
> agnostic as possible..?

You may use CMAKE_CFG_INTDIR.

Try:
cmake --help-variable CMAKE_CFG_INTDIR

You'll get some example with custom command/target.

--
Erk
Membre de l'April - « promouvoir et défendre le logiciel libre » - 
http://www.april.org
--

Powered by www.kitware.com

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Please keep messages on-topic and check the CMake FAQ at: 
http://www.cmake.org/Wiki/CMake_FAQ

Follow this link to subscribe/unsubscribe:
http://www.cmake.org/mailman/listinfo/cmake

This email was sent to you by Thomson Reuters, the global news and information 
company. Any views expressed in this message are those of the individual 
sender, except where the sender specifically states them to be the views of 
Thomson Reuters.
--

Powered by www.kitware.com

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Please keep messages on-topic and check the CMake FAQ at: 
http://www.cmake.org/Wiki/CMake_FAQ

Follow this link to subscribe/unsubscribe:
http://www.cmake.org/mailman/listinfo/cmake

Reply via email to