cmake add_custom_command 已经过时了

标签 cmake cmake-custom-command

我遇到的问题是 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.cppGeneratorTool 已经依赖于 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/

相关文章:

c++ - 为 CLion 设置 Qt

c++ - 使用 cmake 将 log4cpp 库链接到项目

带 print 的 CMake 构建后输出命令

linux - 在构建时从 CMake 运行 cscope

CMake add_custom_command 未运行

linker - 在 cmake 中链接名为 "debug"的库

android - 修改 gradle 中的 cmake 参数以使用 C++ 库在 Android 项目中进行检测

python - 使用 cmake 构建 Python 共享对象绑定(bind),这取决于外部库

CMake:添加可编译文件类型