AW: AW: [CMake] CMake: Problem with reading files with semicolons

wedekind wedekind at caesar.de
Thu Jan 26 09:32:45 EST 2006


Hello Philippe,

you are generally right. But we have different build-processes for the same
source-code at work. That means I cannot introduce this variable in the
source code for everyone, this would break the non-cmake builds. Using CMake
to insert this variable and run CONFIGURE_FILE afterwards results in missing
semicolons too.

I have used a perl script now which runs as a PRE_BUILD-script and modifies
the source code. It's a workaround that is pretty for me, but it would be
nice if this IMHO faulty behaviour of CMake could be fixed.

Best regards

Marco

-----Ursprüngliche Nachricht-----
Von: Philippe Poilbarbe [mailto:Philippe.Poilbarbe at cls.fr] 
Gesendet: Donnerstag, 26. Januar 2006 12:28
An: wedekind; cmake at cmake.org
Betreff: Re: AW: [CMake] CMake: Problem with reading files with semicolons

wedekind a écrit :
> ...
> does not match any semicolons... Therefore I cannot modify C++ 
> source-code files with cmake, at least not the way I have tried. Can 
> you tell me how to insert a line of code (an #include in my case) into 
> an existing source file with CMake?
> ...
>   
Normally this kind of thing is done via CONFIGURE_FILE as it is typically a
parameter depending on configuration (configuration: something determined
before compile time).

You can put in your C file some line like @INCLUDE_MYFILE@ and then define
INCLUDE_MYFILE variable in cmake script and configure the C source file (or,
usually a .h file which is included in your c file)

Examples are below.
Regards,
Ph.P.

============

MyCFile.c.in:
// Source file to be configured
...
@INCLUDE_MYFILE@
...


CMakeLists.txt:
IF (SOME_CONDITION)
  SET(INCLUDE_MYFILE "#include \"MyInclude.h\"") ENDIF (SOME_CONDITION)
CONFIGURE_FILE(MyCFile.c.in MyCFile.c)

_* or *_

MyCFile.c.in:
// Source file to be configured
#cmakedefine @HAVE_H_FILE@
...
#ifdef HAVE_H_FILE
#include "MyInclude.h"
#endif
...


CMakeLists.txt:
IF (SOME_CONDITION)
  SET(HAVE_H_FILE ON)
ENDIF (SOME_CONDITION)
CONFIGURE_FILE(MyCFile.c.in MyCFile.c)







More information about the CMake mailing list