我遇到的问题是 add_custom_command 总是过时,因此在每个版本上运行。自定义命令运行作为同一项目目标的工具来生成由另一个目标使用的文件:
add_executable(GeneratorTool main.cpp)
add_custom_command(
OUTPUT generated.h
COMMAND GeneratorTool
DEPENDS main.cpp
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
COMMENT "** GeneratorTool **"
)
add_library(MyLib STATIC generated.h ...)
在构建输出(Visual Studio 2010)中,我总是看到 ** GeneratorTool **。我希望一旦 generated.h 存在并且比 main.cpp 新,它就不会再次构建。 有什么想法吗?
谢谢, 乔亨
最佳答案
首先,您可以将 DEPENDS
放在 add_custom_command
中的 GeneratorTool 上,而不是 main.cpp
。 GeneratorTool
已经依赖于 main.cpp
。
那么很可能是 generate.h
的位置不明确,从而强制重建 generated.h。
确保 MyLib 在正确的位置查找 generate.h
。
我的盲目猜测是尝试:
add_library(MyLib STATIC ${CMAKE_CURRENT_SOURCE_DIR}/generated.h ...)
关于cmake add_custom_command 已经过时了,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8576036/