[prev in list] [next in list] [prev in thread] [next in thread] 

List:       cmake
Subject:    Re: [CMake] Custom compile command?
From:       Michael Jackson <mike.jackson () bluequartz ! net>
Date:       2009-06-04 20:46:40
Message-ID: 045AD40C-26CC-497A-B131-8125C2DCAC7A () bluequartz ! net
[Download RAW message or body]


On Jun 4, 2009, at 4:18 PM, 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:
>
>
> 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
>
>
> The Makefile takes the same .c file (../ntserv/commands.c) and  
> compiles it multiple times passing in a different -D (-DDOG, -DPUCK)  
> and outputting a different object file (-o commands_mars,
> -o commands_puck).
>
> How would I do this in cmake?
>
> I looked at the ADD_CUSTOM_COMMAND but that doesn't seem the way to  
> go.
>
> Any advise?
>
> Thanks.
>
> -- 
> Bob Tanner <tanner@real-time.com>                  | Phone : (952  
> 943-8700
> http://www.real-time.com, Linux, OSX, VMware | Fax   : (952)943-8500
> Key fingerprint = F785 DDFC CF94 7CE8 AA87 3A9D 3895 26F1 0DDB E378


Off the top of my head I might try the following flow:

configure_file( commands.c ${CURRENT_BINARY_DIR}/commands_mars.c  
COPYONLY )
set_source_files_properties ({CURRENT_BINARY_DIR}/commands_mars.c
				PROPERTIES
				GENERATED TRUE
				COMPILE_FLAGS("-DDOG") )

set (SRCS ${SRCS} {CURRENT_BINARY_DIR}/commands_mars.c )

... Repeat for other files

add_library (Foo ${SRCS} )

That might work (off the top of my head).

Using the configure_file command will make sure that any new changes  
to commands.c will force a recopy of the file into the build directory.

HTH

Mike Jackson





endfor()
_______________________________________________
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
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic