cmake add_custom_command

目的: 添加自定义的构建规则到生成的构建系统中。

有两种用法:

  1. 使用外部命令来产生一个输出, 例如生成文件
  2. 监听一个target的构建事件,在target构建前或者构建后,执行命令

Examples: Generating Files

添加命令,执行后生成源文件

1
2
3
4
5
6
7
add_custom_command(
OUTPUT out.c
COMMAND someTool -i ${CMAKE_CURRENT_SOURCE_DIR}/in.txt
-o out.c
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/in.txt
VERBATIM)
add_library(myLib out.c)

通过生成器表达式,为每个config指定不同的输出

1
2
3
4
5
6
7
8
add_custom_command(
OUTPUT "out-$<CONFIG>.c"
COMMAND someTool -i ${CMAKE_CURRENT_SOURCE_DIR}/in.txt
-o "out-$<CONFIG>.c"
-c "$<CONFIG>"
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/in.txt
VERBATIM)
add_library(myLib "out-$<CONFIG>.c")

Examples: Build Events

在target被构建,链接之后,执行自定义命令

1
2
3
4
5
6
add_executable(myExe myExe.c)
add_custom_command(
TARGET myExe POST_BUILD
COMMAND someHasher -i "$<TARGET_FILE:myExe>"
-o "$<TARGET_FILE:myExe>.hash"
VERBATIM)

目前支持两种

  • PRE_LINK 编译后,连接前执行命令
  • POST_BUILD 构建后,成功链接后执行命令

cmake add_custom_command
https://yxibng.github.io/2022/10/23/cmake/2022-10-23-cmake add_custom_command/
作者
yxibng
发布于
2022年10月23日
许可协议