为什么CMake add_custom_command与DEPFILE每次都重新运行?

ruarlubt  于 2022-12-04  发布在  其他
关注(0)|答案(2)|浏览(220)

我尝试编写如下的cmake脚本:

set(OUTPUT_FILE "${CMAKE_BINARY_DIR}/static_init/generated/${target}/static_init.cpp")
set(DEP_FILE "${CMAKE_BINARY_DIR}/static_init/input/${target}.d")
 write_file(${DEP_FILE} "${OUTPUT_FILE}: ")

add_custom_command(
     OUTPUT ${OUTPUT_FILE}
     COMMAND ${Python3_EXECUTABLE} myscript.py
     DEPFILE ${DEP_FILE}
     VERBATIM)

我希望,我将填充.d文件在我的脚本第一次启动和以后的自定义命令将重新运行时,只有其中一个文件后列出的冒号将改变。相反,命令是运行在每次编译,即使有空的依赖列表。打印我自己的源代码在cmake运行也导致我不断命令重新运行。我做错了什么(或理解错了什么)?
3.18.5忍者叮当

6mw9ycah

6mw9ycah1#

忍者在阅读depfiles后默认删除它们。这将导致您所看到的行为。

1l5u6lss

1l5u6lss2#

问题是DEPFILE选项和depfile中的目标名称必须是相对于构建目录的,而不是绝对路径。ninja -d explain帮助我找到了它。

相关问题