add_custom_command用法

第一个参数OUTPUT或者TARGET决定了此命令何时被执行。

TARGET

意思是当target被编译完时,就执行此COMMAND

add_executable(MakeTable MakeTable.cxx)

add_custom_command(
    TARGET MakeTable
    POST_BUILD(默认值)
    COMMAND MakeTable ${CMAKE_CURRENT_BINARY_DIR}/Table2.h
    )

OUTPUT

意思是OUTPUT所指部分被依赖时,才执行此COMMAND。下面的add_library( ... )如果最后不包含${CMAKE_CURRENT_BINARY_DIR}/Table.h 那么这个COMMAND就不会被执行

add_executable(MakeTable MakeTable.cxx)
 
add_custom_command (
  OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/Table.h
  COMMAND MakeTable ${CMAKE_CURRENT_BINARY_DIR}/Table.h
  DEPENDS MakeTable
  )
 
include_directories( ${CMAKE_CURRENT_BINARY_DIR} )
 
add_library(Mylib SHARED mylib.cpp ${CMAKE_CURRENT_BINARY_DIR}/Table.h  )

源码地址

你可能感兴趣的:(cmake)