我需要从txt基本文件生成几个文件。但是,如果这些文件已经存在,则NMake Makefiles生成器将忽略生成命令:
CMakeLists.txt:
add_custom_command(OUTPUT "FILE.FI" "FILE.h"
COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/../../Tools/GEN.exe
DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/FILE.txt"
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
没有生成的文件
文件系统:
FILE.txt
build.make
...
D:\Path\To\Project\..\..\Tools\GEN.exe
...
存在生成的文件
但是如果FILE.FI
和FILE.h
存在:
文件系统:
FILE.txt
FILE.FI
FILE.h
build.make:
...
所以,我的问题是:如何强制CMake更新现有文件?
PS 。我尝试添加
file(REMOVE "FILE.FI" "FILE.h")
至CMakeLists.txt。它可以工作,但看起来像黑客。
答案 0 :(得分:0)
缺少注释add_custom_target
中的内容。正确设置DEPENDS
,它将仅在依赖关系更改时重新运行。它有点棘手且难以记住,因此我总是参考此example。还要检查那里的评论