[CMake] cmake config.h

luxInteg lux-integ at btconnect.com
Wed Jan 26 15:03:44 EST 2011


On Tuesday 25 January 2011 03:32:36 luxInteg wrote:
> On Sunday 28 November 2010 16:03:33 luxInteg wrote:
> > I came across the useful wiki
> > http://www.cmake.org/Wiki/CMake:How_To_Write_Platform_Checks
> 
> I need '1's in config.g and I dont know how these are generated.
> For gsl  This the cmake output:-
> 
> -- Looking for sys/types.h
> -- Looking for sys/types.h - found
> -- Looking for sys/stat.h
> -- Looking for sys/stat.h - found
> -- Looking for stdlib.h
> -- Looking for stdlib.h - found
> -- Looking for string.h
> -- Looking for string.h - found
> -- Looking for memory.h
> -- Looking for memory.h - found
> -- Looking for strings.h
> -- Looking for strings.h - found
> -- Looking for inttypes.h
> -- Looking for inttypes.h - found
> -- Looking for stdint.h
> -- Looking for stdint.h - found
> -- Looking for unistd.h
> -- Looking for unistd.h - found
> -- Looking for dlfcn.h
> -- Looking for dlfcn.h - found
> -- Looking for vprintf
> -- Looking for vprintf - found
> -- Looking for memcpy
> -- Looking for memcpy - found
> -- Looking for memmove
> -- Looking for memmove - found
> -- Looking for strdup
> -- Looking for strdup - found
> -- Looking for strtol
> -- Looking for strtol - found
> -- Looking for strtoul
> -- Looking for strtoul - found
> -- HAVE_EXIT_SUCCESS_AND_FAILURE
> -- Looking for cos in m
> -- Looking for cos in m - found
> -- HAVE_DECL_FEENABLEEXCEPT
> -- HAVE_DECL_HYPOT
> -- HAVE_DECL_EXPM1
> -- HAVE_DECL_ACOSH
> -- HAVE_DECL_ASINH
> -- HAVE_DECL_ATANH
> -- Looking for ldexp
> -- Looking for ldexp - found
> -- Looking for frexp
> -- Looking for frexp - found
> -- Looking for isinf
> -- Looking for isinf - found
> -- Looking for finite
> -- Looking for finite - found
> -- Looking for isnan
> -- Looking for isnan - found
> -- HAVE_DECL_ISFINITE
> -- HAVE_DECL_LOG1P
> -- HAVE_PRINTF_LONGDOUBLE
> -- HAVE_EXTENDED_PRECISION_REGISTERS
> -- HAVE_FPU_X86_SSE
> -- Performing Test HAVE__FPU_SETCW
> -- Performing Test HAVE__FPU_SETCW - Success
> -- Performing Test HAVE_FPSETPREC
> -- Performing Test HAVE_FPSETPREC - Failed
> -- Performing Test HAVE__CONTROLFP
> -- Performing Test HAVE__CONTROLFP - Failed
> -- Performing Test HAVE__CONTROLFP_S
> -- Performing Test HAVE__CONTROLFP_S - Failed
> -- Performing Test HAVE_FPU_INLINE_ASM_X86
> -- Performing Test HAVE_FPU_INLINE_ASM_X86 - Success
> -- HAVE_GNUX86_IEEE_INTERFACE
> -- HAVE_IEEE_COMPARISONS
> -- HAVE_IEEE_DENORMALS
> -- Configuring done
> -- Generating done
> -- Build files have been written to: ~/S_TESTS/gsl-1.14/build
> 
> 
> 
> 
> make fails like so
> 
> ~/sys/infnan.c:98:3: error: #error "cannot define gsl_finite without
> HAVE_DECL_FINITE or HAVE_IEEE_COMPARISONS"
> ~/sys/infnan.c:115:3: error: #error "cannot define gsl_isnan without
> HAVE_DECL_ISNAN or HAVE_IEEE_COMPARISONS"
> 
> I thought I ensured   that  HAVE_IEEE_COMPARISONS  and HAVE_DECL_FINITE 
> and HAVE_DECL_ISNAN  etc   were tested for and  set to 1 in  the config.h-
> generating file (when these were not  not generated by  'standard cmake
> macros)  and hoped that they would be with the latter.  However  there
> were no '1's in the config.h file and  the make failed.  A quick/crude 
> substitute of appropriate '1's   in the said   file and the  make
> progressed.  So how do I ensure that  '1's are set in the  generated 
> config.h  file?
> 
> 

I still have not seen a reproducible way of generating a config.h.in  to 
reflect results of 'platform' checks in cmake. Would a  simple approach of 
generating )dynamically) such a config.h.in  not be useful?

Suppose we were start with an empty  file -call this  config.h.cmake  (for 
instance)

so  to do a  header file check  for example
check_include_file(somefile.h  HAVE_SOMEFILE_H)

if the above is true
use the execute_process()
to add a line  (for example ) like so :-
--------------
cat>>config.h.cmake<<"EOF"
#define HAVE_SOMEFILE_H  1
EOF
--------------

then repeat for other checks{and custom checks}
adding compile definitions (to the appropriate CMakeLists,txt file) as 
required

then in the end use configure_file() to transform this file in to the required 
config.h


More information about the CMake mailing list