第一个参数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 )
源码地址