[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