On 9. Aug, 2009, at 22:49, James C. Sutherland wrote:
In my configure.h.in file I have:
#cmakedefine TEST_VAR_VALUE
In my CMakeLists.txt file I have:
configure_file( ${PROJECT_SOURCE_DIR}/src/config.h.in $
{PROJECT_SOURCE_DIR}/src/configure.h )
set( TEST_VAR_VALUE "0" )
This results in a configure.h file containing:
/* #undef TEST_VAR_VALUE */
But what I would like is:
#define TEST_VAR_VALUE 0
So basically cmake is seeing the value of TEST_VAR_VALUE as 0
and treating it as "false" rather than a value.
Any ideas how to accomplish this?
James
Use the (undocumented) #cmakedefine01.
I already submitted a patch, and the documentation has been
fixed in CVS.
Michael
Thanks! That did it.
Okay - I spoke too soon. It gave me a partial solution.
What if I want to have something like
#define TEST_VAR_VALUE 5
In the .in file:
#cmakedefine TEST_VAR_VALUE ${TEST_VAR_VALUE}
doesn't work (for reasons mentioned above)
However,
#cmakedefine01 TEST_VAR_VALUE ${TEST_VAR_VALUE}
results in
#define TEST_VAR_VALUE 5 1
if I have
set( TEST_VAR_VALUE 5 )
in my CMakeLists.txt file.
Can I get rid of the trailing value?
Aah, now I see what you want...
#define TEST_VAR_VALUE ${TEST_VAR_VALUE}
is what you want.
But if I do
set( TEST_VAR_VALUE 0 )
then this results in TEST_VAR_VALUE being undefined rather than
having the value of 0 as I want. If the value is anything other
than zero it works. This is what I tried to explain in my original
(probably unclear) post...
$ cat CMakeLists.txt
cmake_minimum_required( VERSION 2.6 )
project( test )
set( TEST_VAR_VALUE1 0 )
set( TEST_VAR_VALUE2 1 )
set( TEST_VAR_VALUE3 "hello there" )
configure_file( config.h.in ${test_BINARY_DIR}/config.h )
$ cat config.h.in
#define TEST_VAR_VALUE1 ${TEST_VAR_VALUE1}
#define TEST_VAR_VALUE2 ${TEST_VAR_VALUE2}
#define TEST_VAR_VALUE3 ${TEST_VAR_VALUE3}
$ mkdir build && cd build && cmake ..
$ cat config.h
#define TEST_VAR_VALUE1 0
#define TEST_VAR_VALUE2 1
#define TEST_VAR_VALUE3 hello there
Which presumably is what you want... why would you think that
SET(TEST_VAR_VALUE 0) "undefines" it? For that you either use
SET(TEST_VAR_VALUE), or with newer versions of CMake you can use the
clearer UNSET(TEST_VAR_VALUE).
Michael
_______________________________________________
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