[CMake] How to use add_custom_command correctly

Martin Kupke martin.kupke at novero.com
Tue Sep 27 11:59:27 EDT 2011


Hi,

in my project there is a subfolder which SHALL contain sources to 
generate a library. The problem is that at startup of the project there 
are no source files existing, because they will be generated by a code 
generator. This means within the build process the code generator needs 
to be called first, then generates the output files in the subfolder and 
then a library shall be generated from that source files (this are 
standard .c and .h files). If I start the code generator by hand to 
generate the source files and remove the custom command, then the 
compilation is successful, but I want the code generator to be started 
every time the configuration file for the code generator has changed.

In my sample below
* the driver.c would be one of the files which the code generator would 
generate
* the variable CodeGen is the executable tool (the code generator himself)
* the variable CodeGenParam contains the parameters which are passed to 
be able to generate without any user interaction
* the variable CodeGenConfig is the input file for the code generator

This subfolder contains its own CMakeLists.txt with the following settings:
##################### snip #####################
project(CANstack C)

add_custom_command( OUTPUT driver.c
                                            COMMAND ${CodeGen} 
${CodeGenParam}
                                            DEPENDS ${CodeGenConfig} )
)

file(GLOB CANstack_srcs "*.c")
file(GLOB CANstack_hdrs "*.h")

set(lib_name "CANstack")
add_library(${lib_name} STATIC ${CANstack_srcs} ${CANstack_hdrs})

##################### snap #####################

I don't get it work that the custom command is called and the source 
files from the code generator are produced.



More information about the CMake mailing list