[CMake] #cmakedefine vs #define

2011-03-15 Thread Balamurali Ananthan

Hello,

Sorry if this question is too primitive. I am trying to extract the 
build dir into the source code by populating it in a variable in my 
config.h file.


I do this by adding the following line in config.h.in

#cmakedefine PROJ_BUILD_DIR_CMAKEDEFINE ${PROJECT_BINARY_DIR}

In the config.h, this produces

/* #undef PROJ_BUILD_DIR_CMAKEDEFINE */



But if i replace it to this in config.h.in,

#define PROJ_BUILD_DIR_DEFINE ${PROJECT_BINARY_DIR}

Then the right value is populated in the config.h

#define PROJ_BUILD_DIR_DEFINE /home/bala/projects/myproj/trunk/builds

Wondering why didn't the cmakedefine work in this case? Any clues?

Thanks much.

--
Balamurali Ananthan

___
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


Re: [CMake] #cmakedefine vs #define

2011-03-15 Thread Alan W. Irwin

On 2011-03-15 16:26-0600 Balamurali Ananthan wrote:


Hello,

Sorry if this question is too primitive. I am trying to extract the build dir 
into the source code by populating it in a variable in my config.h file.


I do this by adding the following line in config.h.in

#cmakedefine PROJ_BUILD_DIR_CMAKEDEFINE ${PROJECT_BINARY_DIR}

In the config.h, this produces

/* #undef PROJ_BUILD_DIR_CMAKEDEFINE */



But if i replace it to this in config.h.in,

#define PROJ_BUILD_DIR_DEFINE ${PROJECT_BINARY_DIR}

Then the right value is populated in the config.h

#define PROJ_BUILD_DIR_DEFINE /home/bala/projects/myproj/trunk/builds

Wondering why didn't the cmakedefine work in this case? Any clues?


The man page for cmake covers this.  #cmakedefine VAR will be
replaced with either #define VAR or /* #undef VAR  */
depending on  the  setting  of  VAR in CMake.

Note that VAR is the CMake variable name and not its value.
PROJ_BUILD_DIR_CMAKEDEFINE does not exist as a CMake variable in your
project so its CMake value is false and you get the above commented
out #undef result just like the man page says.  OTOH if you had
specified instead,

#cmakedefine PROJECT_BINARY_DIR

that would have configured (since PROJECT_BINARY_DIR is True in the
CMake sense for your project) as

#define PROJECT_BINARY_DIR

Of course, that would not have been too helpful to you since there is
no associated explicit value, but note #cmakedefine is quite useful
for the case of conditional programming depending on #ifdef (i.e.,
True/False binary macro logic).

For cases where you need to #define an explicit value, then you should
forget about #cmakedefine and use the configured #define (as you did
above).

Alan
__
Alan W. Irwin

Astronomical research affiliation with Department of Physics and Astronomy,
University of Victoria (astrowww.phys.uvic.ca).

Programming affiliations with the FreeEOS equation-of-state implementation
for stellar interiors (freeeos.sf.net); PLplot scientific plotting software
package (plplot.org); the libLASi project (unifont.org/lasi); the Loads of
Linux Links project (loll.sf.net); and the Linux Brochure Project
(lbproject.sf.net).
__

Linux-powered Science
__
___
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