[CMake] Custom compile command?
Bill Hoffman
bill.hoffman at kitware.com
Thu Jun 4 16:57:22 EDT 2009
Bob Tanner wrote:
> I'm moving an open source project (netrek) to cmake. Things are going
> great except for 1 fairly convoluted Makefile snippet listed below:
>
Cool!
I used to love Xtrek! I wasted many hours playing that at GE in the
early 90's.
>
> commands_mars.o: $(PMAKE) ${srcdir}/../ntserv/commands.c
> $(CC) $(CFLAGS) $(DEP) -DDOG -c ${srcdir}/../ntserv/commands.c -o
> commands_mars.o
>
> commands_puck.o: $(PMAKE) ${srcdir}/../ntserv/commands.c
> $(CC) $(CFLAGS) $(DEP) -DPUCK -c ${srcdir}/../ntserv/commands.c
> -o commands_puck.o
>
> commands.o: $(PMAKE) ${srcdir}/../ntserv/commands.c
> $(CC) $(CFLAGS) $(DEP) -c ${srcdir}/../ntserv/commands.c -o
> commands.o
>
> commands_basep.o: $(PMAKE) ${srcdir}/../ntserv/commands.c
> $(CC) $(CFLAGS) $(DEP) -DBASEP -c ${srcdir}/../ntserv/commands.c
> -o commands_basep.o
>
You could use configure_file to do this.
Something like this:
set(COMMANDS_TYPE DOG)
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/commands.c.in
${CMAKE_CURRENT_BINARY_DIR}/commands_mars.c)
set(COMMANDS_TYPE PUCK)
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/commands.c.in
${CMAKE_CURRENT_BINARY_DIR}/commands_puck.c)
Where commands.c.in looks like this:
#define ${COMMANDS_TYPE}
#include "${CMAKE_CURRENT_SOURCE_DIR}/commands.c"
add_library(mylib
${CMAKE_CURRENT_BINARY_DIR}/commands_mars.c
${CMAKE_CURRENT_BINARY_DIR}/commands_puck.c)
-Bill
More information about the CMake
mailing list