[CMake] EXECUTE_PROCESS or ADD_CUSTOM_COMMAND?

Brandon J. Van Every bvanevery at gmail.com
Tue Jul 25 16:21:18 EDT 2006


fuchsrich at se-core.net wrote:
> I need to compile a code generator, run the code generator, then compile the
> code that the code generator produces.  Do I need to complie the generator,
> then use the EXECUTE_PROCESS command to run it, then have the generated code
> compiled, 

No.

> or should I use the ADD_CUSTOM_COMMAND somehow?
>   

Yes.  Note further that consumers using the generator will need 
GET_TARGET_PROPERTY.  For instance, you can look at a snippet of my 
Chicken Scheme bootstrap below.  Note also, this problem is in the FAQ.  
The FAQ is worth checking a few times when one is learning CMake, 
although it is far from exhaustive on various problems.

ADD_CUSTOM_COMMAND(
  OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/nsample.c
  MAIN_DEPENDENCY nsample.scm
  COMMAND ${CURRENT_CHICKEN} ${Chicken_SOURCE_DIR}/nsample.scm 
-output-file ${CMAKE_CURRENT_BINARY_DIR}/nsample.c -explicit-use -uses 
library -uses eval ${CHICKEN_FLAGS}
  COMMENT "Compiling ${Chicken_SOURCE_DIR}/nsample.scm to 
${CMAKE_CURRENT_BINARY_DIR}/nsample.c"
)
ADD_EXECUTABLE(nsample ${CMAKE_CURRENT_BINARY_DIR}/nsample.c)
SET_TARGET_PROPERTIES(nsample PROPERTIES COMPILE_FLAGS "${STATIC_FLAGS}")
TARGET_LINK_LIBRARIES(nsample libchicken-static)
ADD_DEPENDENCIES(nsample chicken-boot)

GET_TARGET_PROPERTY(NSAMPLE_EXE nsample LOCATION)
ADD_CUSTOM_TARGET(stack-size
  COMMAND ${CMAKE_COMMAND}
    -DChicken_SOURCE_DIR=${Chicken_SOURCE_DIR}
    -DNSAMPLE_EXE=${NSAMPLE_EXE}
    -DDEFAULT_TARGET_STACK_SIZE=${DEFAULT_TARGET_STACK_SIZE}
    -P ${Chicken_SOURCE_DIR}/stack-size.cmake
)
ADD_DEPENDENCIES(stack-size nsample)


Cheers,
Brandon Van Every



More information about the CMake mailing list