[CMake] #cmakedefine and the #if vs #ifdef argument

Alexander Neundorf a.neundorf-work at gmx.net
Wed Jun 17 17:27:19 EDT 2009


On Thursday 11 June 2009, Hostile Fork wrote:
> Hello list!
>
> As a learning exercise, I am adding CMake and CTest to a small open-
> source library I made which currently has no build system:
>
> 	http://hostilefork.com/nstate/
> 	http://hostilefork.com/nocycle/
>
> For the first step, I have been applying the "configure_file"
> methodology to this header:
>
> 	http://github.com/hostilefork/nocycle/blob/1ac238aea7af9e02f3a49f0c7eb9910
>74c8eb3fd/NocycleSettings.hpp
>
> ( Following these directions:
> http://www.vtk.org/Wiki/CMake_HowToDoPlatformChecks )
>
> It seems the #cmakedefine lines are replaced with one of these two
> cases:
>
> 	#define VAR_THAT_IS_ON
> 	/* #undef VAR_THAT_IS_OFF */
>
> However... in the past I have been persuaded by the argument that the
> use of #if is superior to #ifdef for conditional compilation.
> ( Roddy's comment here on StackOverflow summarizes the advantages
> pretty well:
> http://stackoverflow.com/questions/135069/ifdef-vs-if-which-is-bettersafer
> )
>
> Is it possible to get CMake to produce something more like:
>
> 	#define VAR_THAT_IS_ON 1
> 	#define VAR_THAT_IS_OFF 0

Did you try using
#cmakedefine01 VAR_THAT_IS_ON
I think this should do what you want.

Alex


More information about the CMake mailing list