Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
cmake add_custom_命令,该命令在每次生成时执行_Cmake_Add Custom Command - Fatal编程技术网

cmake add_custom_命令,该命令在每次生成时执行

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

我想在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(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都运行。密切相关但执行得太晚:密切相关但执行得太晚: