cmake add_custom_命令,该命令在每次生成时执行
我想在CMake中有一些东西,在我进入make时执行cmake add_custom_命令,该命令在每次生成时执行,cmake,add-custom-command,Cmake,Add Custom Command,我想在CMake中有一些东西,在我进入make时执行 add_custom_command( OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/build_date.cc PRE_BUILD COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/mk_build_date.py ${CMAKE_CURRENT_BINARY_DIR}/build_date.cc ) add_custom_target(buil
add_custom_command(
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/build_date.cc
PRE_BUILD
COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/mk_build_date.py
${CMAKE_CURRENT_BINARY_DIR}/build_date.cc
)
add_custom_target(build-date-xxx
ALL
DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/build_date.cc)
这就是我目前正在做的。不幸的是,make build date xxx
只会生成一次文件
即使没有add\u custom\u target
声明,文件也只生成一次
GNU Make中的结果应该是这样的
.PHONY all:
echo "hallo welt"
all: foo.c bar.c
%.c:
touch $@
在该makefile中,只要输入make。由于all是第一个目标,因此将始终调用它,并且实际执行自定义命令
echo“hallo welt”
。尝试使用ADD\u custom\u target并使用其中的所有参数。
然后使您的主目标依赖于此自定义目标。尝试使用ADD\u custom\u target并使用其中的所有参数。
然后使您的主要目标依赖于此自定义目标。颠倒您的顺序。。。有一个生成文件的没有依赖项的自定义目标(无
依赖项
),并添加一个依赖于此目标的自定义命令,指出它输出
文件,实际上不做任何事情(例如命令${CMAKE_命令}-e echo
)。然后在某个地方提到输出文件(可能是作为库或可执行文件的源文件)。(您也可以对自定义目标使用ALL
,但我假设某些代码对象实际使用输出文件,因此您希望所述代码对象依赖于输出文件。)
理想情况下,您应该避免修改文件,除非某些内容发生了实际更改,否则您将永远无法获得无操作构建。(如何做到这一点留给读者作为练习。)颠倒顺序。。。有一个生成文件的没有依赖项的自定义目标(无
依赖项
),并添加一个依赖于此目标的自定义命令,指出它输出
文件,实际上不做任何事情(例如命令${CMAKE_命令}-e echo
)。然后在某个地方提到输出文件(可能是作为库或可执行文件的源文件)。(您也可以对自定义目标使用ALL
,但我假设某些代码对象实际使用输出文件,因此您希望所述代码对象依赖于输出文件。)
理想情况下,您应该避免修改文件,除非某些内容发生了实际更改,否则您将永远无法获得无操作构建。(如何做到这一点留给读者作为练习。)事实上,这正是我在看cmake中的第二个命令时所做的。一旦cmake运行,它就会生成文件。但并不是每次make都运行。实际上,这正是我在cmake中看到的第二个命令。一旦cmake运行,它就会生成文件。但并非每次make都运行。密切相关但执行得太晚:密切相关但执行得太晚: