-----Original Message----- From: Bill Hoffman [mailto:[EMAIL PROTECTED] Sent: Thu 2/14/2008 2:45 PM To: Martin Lütken; cmake Subject: Re: [CMake] @MY_VAR@ are replaced by empty string ! Martin Lütken wrote: > > > > > > -----Original Message----- > From: Bill Hoffman [mailto:[EMAIL PROTECTED] > Sent: Wed 2/13/2008 7:50 PM > To: Martin Lütken > Cc: [email protected] > Subject: Re: [CMake] @MY_VAR@ are replaced by empty string ! > > Martin Lütken wrote: > > SHORT: > > It's seems impossible to contruct a string containing something like > this: > > "@MY_VAR@". The whole thing gets replaced by an empty string regardless > > whether > > the MY_VAR variable is set or not. It is possible to create a string > > like "@ MY_VAR@", > > but that is not quite the same. > > > > > > ACTUAL PROBLEM DESCRIPTION: > > I am trying to create cmake files for Gtk+ and asssociated libs among > > those Pango! > > > > In order to run the glib-mkenums perl script from CMake I need to be > > able to contruct > > a custom command with strings containing the above "@MY_VAR@" construct > > which the script > > uses in a similar fashion as CMake does in it's CONFIGURE_FILE command. > > > > Any suggestions? Or do I need to file a bug-report ? > > > > Can you use COPY_ONLY? Or do you need to configure some variables in > the file, just not all of them? > > Actually I need that as part of running a CUSTOM_COMMAND. So I need to > construct parameters like that > for a perlscript that creates c-source code from a bunch of header files. > I still don't get it... You want to run a perl script from a custom command, that much I get... However, I don't know why it needs to be configured? -Bill Hi again I might have figured most of it out now. I learned from another posting here that I should not quote the commands. That helped and after a lot of "escaping" it allmost works! Now I just seem to have a problem with the WORKING_DIRECTORY which seems to be ignored completely! I am using CMake version "2.4-patch 7". --- My original makefile was like this: --- ( cd $(srcdir) && $(GLIB_MKENUMS) \ --fhead "#undef GTK_DISABLE_DEPRECATED\n#define GTK_ENABLE_BROKEN\n#include \"gtk.h\"\n#include \"gtkprivate.h\"\n#include \"gtkalias.h\"\n" \ --ftail "#define __GTK_TYPE_BUILTINS_C__\n#include \"gtkaliasdef.c\"\n" \ --fprod "\n/* enumerations from \"@[EMAIL PROTECTED]" */" \ --vhead "[EMAIL PROTECTED]@_get_type (void)\n{\n static GType etype = 0;\n if (etype == 0) {\n static const [EMAIL PROTECTED]@Value values[] = {" \ --vprod " { @VALUENAME@, \"@[EMAIL PROTECTED]", \"@[EMAIL PROTECTED]" }," \ --vtail " { 0, NULL, NULL }\n };\n etype = [EMAIL PROTECTED]@_register_static (g_intern_static_string (\"@[EMAIL PROTECTED]"), values);\n }\n return etype;\n}\n" \ $(gtk_public_h_sources) ) gtktypebuiltins.c --- And I got it transformed to: --- ADD_CUSTOM_TARGET ( gtkMkEnumsTarget ALL echo "Creating ...." ) SET ( type ) SET ( outFileName "gtktypebuiltins" ) ADD_CUSTOM_COMMAND( OUTPUTS ${CMAKE_CURRENT_BINARY_DIR}/${outFileName}.c SOURCE gtk.symbols COMMAND ${glib-mkenums_EXECUTABLE} --fhead \"\#undef GTK_DISABLE_DEPRECATED\\n\#define GTK_ENABLE_BROKEN\\n\#include \\"gtk.h\\"\\n\#include \\"gtkprivate.h\\"\\n\#include \\"gtkalias.h\\"\\n\" --ftail \"\#define __GTK_TYPE_BUILTINS_C__\\n\#include \\"gtkaliasdef.c\\"\\n\" --fprod \"\\n/* enumerations from \\"@[EMAIL PROTECTED]" */\" --vhead \"[EMAIL PROTECTED]@_get_type \(void\)\\n{\\n static GType etype = 0;\\n if \(etype == 0\) {\\n static const [EMAIL PROTECTED]@Value values[] = {\" --vprod \" { @VALUENAME@, \\"@[EMAIL PROTECTED]", \\"@[EMAIL PROTECTED]" },\" --vtail \" { 0, NULL, NULL }\\n };\\n etype = [EMAIL PROTECTED]@_register_static \(g_intern_static_string \(\\"@[EMAIL PROTECTED]"\), values\);\\n }\\n return etype;\\n}\\n\" ${${CBS_CURRENT}_PUBLIC_HEADER} > ${CMAKE_CURRENT_BINARY_DIR}/${outFileName}.c TARGET gtkMkEnumsTarget WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} ) ADD_SOURCE_FILE ( ${CMAKE_CURRENT_BINARY_DIR}/${outFileName}.c ) SET_SOURCE_FILES_PROPERTIES( ${CMAKE_CURRENT_BINARY_DIR}/${outFileName}.c GENERATED ) ---------- But the generated makefile does not switch to the requested WORKING_DIRECTORY but instead to the CMAKE_CURRENT_BINARY_DIR regardless of what I set as WORKING_DIRECTORY. --- It looks something like this in the CMake generated makefile: --- @echo "Generating gtktypebuiltins.c" cd /home/ml/code/cpaf/build_cbs/kdev_release/lgpl/gtk/gtk && ../../glib-main/gobject/glib-mkenums --fhead "#undef GTK_DISABLE_DEPRECATED\n#define GTK_ENABLE_BROKEN\n#include \"gtk.h\"\n#include \"gtkprivate.h\"\n#include \"gtkalias.h\"\n" --ftail "#define __GTK_TYPE_BUILTINS_C__\n#include \"gtkaliasdef.c\"\n" --fprod "\n/* enumerations from \"@[EMAIL PROTECTED]" */" --vhead "[EMAIL PROTECTED]@_get_type (void)\n{\n static GType etype = 0 \n if (etype == 0) {\n static const [EMAIL PROTECTED]@Value values[] = {" --vprod " { @VALUENAME@, \"@[EMAIL PROTECTED]", \"@[EMAIL PROTECTED]" }," --vtail " { 0, NULL, NULL }\n } \n etype = [EMAIL PROTECTED]@_register_static (g_intern_static_string (\"@[EMAIL PROTECTED]"), values) \n }\n return etype \n}\n" gtk.h ( ... LOTS_OF_HEADER_FILES .... ) > /home/ml/code/cpaf/build_cbs/kdev_release/lgpl/gtk/gtk/gtktypebuiltins.c --- problem: --- The glib-mkenums script cannot find the header files since it's executed from the wrong working directory! Any suggestions ? -Martin Lutken
_______________________________________________ CMake mailing list [email protected] http://www.cmake.org/mailman/listinfo/cmake
