[CMake] VS.NET generation...

Lars Pechan lars.pechan at parkerpechan.com
Mon Nov 1 22:10:56 EST 2004


OK, what is the scope of the TARGET_PROPERTY (relating to the example  
in the faq.) I'm guessing ${MY_GENERATOR_EXE} is valid in the same  
CMakeLists.txt file and (possibly) in its subdirs? Also guessing that  
if I'm to use ${MY_GENERATOR_EXE} in a sibling directory to where it  
was defined that won't work. Which means I'll have to resort to  
CMAKE_CFG_INTDIR.

Thanks, I'll try RelWithDebugInfo.

/Lars

On 2/11/2004, at 3:16 PM, Brad King wrote:

> Lars Pechan wrote:
>> Hi there,
>> I have two questions about the VS.NET 2003 generator:
>> Q1) LIBRARY/EXECUTABLE_OUTPUT_PATH
>> I use this to make sure some exes and libs end up where I want them.  
>> During the build I then need to run some of the utilities that have  
>> been created in earlier steps.  Essentially I do
>> SET(EXEDIR ${Proj_BINARY_DIR}/exe)
>> ADD_EXECUTABLE(foo ${fooSources})
>> SET(EXECUTABLE_OUTPUT_PATH ${EXEDIR})
>> and then invoke foo.exe by running
>> COMMAND ${EXEDIR}/foo
>> in a custom command later.
>> Using NMake Makefiles this works fine. Using the VS.NET generator  
>> though changes my EXE dir to ${EXE}/Release for a Release build and  
>> ${EXE}/Debug for a Debug build. foo.exe ends up in ${EXE}/Release.
>> Now when I need to run foo.exe later it is not found. My  
>> CUSTOM_COMMAND refers to it as ${EXE}/foo but it isn't there, it's in  
>> ${EXE}/Release.
>> So how can I reference an executable produced in the project itself  
>> without hacking CMakeLists.txt for different buildstyles or something  
>> equally unmaintainable?
>
> There is a variable called CMAKE_CFG_INTDIR which expands to "." for  
> Makefile builds and $(INTDIR) for VS project builds.  This is intended  
> to solve the problem.  The best solution though is to use the example  
> from the FAQ:
>
> http://www.cmake.org/Wiki/ 
> CMake_FAQ#How_can_I_generate_a_source_file_during_the_build.3F
>
>> Q2) Suppressing _DEBUG from a debug build.
>> As far as I can see either the CMake generator or VS.NET itself  
>> automatically adds _DEBUG to the preprocessor settings for a project.  
>> This leads to linking being done against /MTd which contains the  
>> debug routines for malloc etc.
>> The project I'm converting has to be linked against /MT so I tried  
>> doing a REMOVE_DEFINITIONS(-D_DEBUG) (also tried /D_DEBUG and just  
>> _DEBUG) but the symbol is still defined.
>> Is there any way around this?
>
> You can try the "RelWithDebInfo" build configuration.  This might do  
> what you want.
>
> -Brad



More information about the CMake mailing list