On Jun 24, 2010, at 2:40 AM, Michael Hertling wrote: > On 06/24/2010 08:29 AM, Tom Birch wrote: >> Hi, >> >> I'm trying to invoke the C compiler in cmake as would happen with an >> add_excecutable command, but I don't want to generate an object file. >> Basically I have a script which generates a c file, I want to compile that >> file in the environment I've set up, while passing the -S flag. I then want >> to run that .s file through another script to generate a header which will >> then be a dependency of my main executable. Doing the scripts is easy with >> add_custom_target, and I'm sure I could write all the magic to generate the >> full compile command line myself, but isn't there some elegant way to >> generate the a single compiler invocation that doesn't result in a dylib or >> a binary, that works in a similar way to add_excecutable? > > If you are using a Makefile generator I could offer this approach: > > Place the following file "cps" as executable in CMAKE_SOURCE_DIR: > > #!/bin/sh > d=$1; shift > while [ "$1" != "--" ]; do > cp $1 $d/$(basename $1 .o).s; shift > done > > Now, look at the following CMakeLists.txt: > > CMAKE_MINIMUM_REQUIRED(VERSION 2.8 FATAL_ERROR) > PROJECT(CPS C) > FILE(WRITE f1.c "void f1(void){}\n") > FILE(WRITE f2.c "void f2(void){}\n") > FILE(WRITE f3.c "void f3(void){}\n") > ADD_EXECUTABLE(f f1.c f2.c f3.c) > SET_TARGET_PROPERTIES(f PROPERTIES > COMPILE_FLAGS "-S" > RULE_LAUNCH_LINK > "${CMAKE_SOURCE_DIR}/cps ${CMAKE_BINARY_DIR} <OBJECTS> --" > ) > > This uses the above-mentioned "cps" as a launch script for linking the > target "f", but "cps" just copies the object files - delimited by "--" > - to the directory specified as the first argument, and of course, the > objects are in fact the assembler code files generated from the sources > by the "-S" flag which is imposed on the same target. Effectively, this > means you have a target producing ".s" files instead of an executable, > and everything else should be business as usual.
Yep, that was exactly what I needed, thanks! Tom > > 'hope that helps. > > Regards, > > Michael > > P.S.: The source file property GENERATED is useful in this context. > _______________________________________________ > 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 _______________________________________________ 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