On 10/27/2010 08:02 PM, Arne Pagel wrote: > Hello, > > I need a custom command in my build process. > The tool that I am using has a small problem, I have to insert a line of code > in > the output file manually: > #include <gtk/gtk.h> > > I tried this with echo and output redirection: > echo "#include <gtk/gtk.h>" > images.c > > The tool, gdk-pixbuf-csource, is not able to generate a file, therefor its > output has to be > redirected to the file too: > gdk-pixbuf-csource --raw pix1 ./images/pix1.png >> images.c > > I can get it work one linux and win32 system, but with different syntax: > > This works on a win32 System: > > ADD_CUSTOM_COMMAND (OUTPUT ${CMAKE_CURRENT_SOURCE_DIR}/images.c > COMMAND ${CMAKE_COMMAND} -E echo "\#include <gtk/gtk.h>" > > images.c > COMMAND gdk-pixbuf-csource --raw pix1 ./images/pix1.png > >> images.c > DEPENDS ./images/pix1.png ) > > > This works on a linux System: > > ADD_CUSTOM_COMMAND (OUTPUT ${CMAKE_CURRENT_SOURCE_DIR}/images.c > COMMAND echo "\"""#include""<gtk/gtk.h>" "\"" > images.c > COMMAND gdk-pixbuf-csource --raw pix1 ./images/pix1.png > >> images.c > DEPENDS ./images/pix1.png ) > > I tried many variations of above examples, but I can't get running on both > systems with the same > syntax, any idea what might be right? > > Perhaps there is another way then "echo" to write something in a file, I > tried FILE(WRITE) but I > failed with this. > > I could make a file with the include line already inserted and than try to > copy it, I saw some > commands for that, is this the better Way? Actually I don't prefer this, I > don't want to have a > strange single-line source file in the project.
Possibly, you can use a CMake script with EXECUTE_PROCESS() and FILE(): CMAKE_MINIMUM_REQUIRED(VERSION 2.8 FATAL_ERROR) PROJECT(PIXBUF NONE) FILE(WRITE ${CMAKE_BINARY_DIR}/pixbuf.cmake " EXECUTE_PROCESS(COMMAND gdk-pixbuf-csource --raw \${SRC} OUTPUT_VARIABLE PIXBUF) FILE(WRITE \${DST} \"#include <gtk/gtk.h>\n\") FILE(APPEND \${DST} \${PIXBUF}) ") ADD_CUSTOM_COMMAND(OUTPUT ${CMAKE_BINARY_DIR}/test.c COMMAND ${CMAKE_COMMAND} -DSRC=${CMAKE_SOURCE_DIR}/test.png -DDST=${CMAKE_BINARY_DIR}/test.c -P ${CMAKE_BINARY_DIR}/pixbuf.cmake DEPENDS ${CMAKE_SOURCE_DIR}/test.png) ADD_CUSTOM_TARGET(pixbuf DEPENDS ${CMAKE_BINARY_DIR}/test.c) The pixbuf.cmake script gathers the output of gdk-pixbuf-csource and appends it to the resulting file which already contains the include line. This approach should work in a platform-independent manner. Regards, Michael _______________________________________________ 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