在'make'的后续运行中强制刷新cmake脚本

时间:2013-09-26 10:09:53

标签: c++ cmake

在我的cmake脚本中,我确定当前日期并将其交给我的c++程序源,以便将构建日期编译到程序中。问题是,在make的后续运行中,cmake实际上根本没有运行,日期不会更新。

如何强制cmake刷新变量并仅使用make重新编译程序?或者:将构建日期编译成二进制文件的最佳方法是什么?

cmake脚本包含:

INCLUDE(Today)
TODAY(DATE)

ADD_DEFINITIONS(
    ...
    -DBUILD_DATE=\"${DATE}\"
)

1 个答案:

答案 0 :(得分:2)

您可以使用自定义目标来执行您想要的任何内容。自定义目标始终被视为过时,并在每次构建时运行。

add_custom_target(RerunCmake ${CMAKE_COMMAND} ${CMAKE_SOURCE_DIR})
add_dependencies(YourTarget RerunCmake)

这适用于makefile。但是视觉工作室会因为项目文件在磁盘上发生变化而在每次构建之后都要求重新加载项目。

也许最好制作一个自定义目标,只使用正确的日期更新头文件,这样cmake就不会在每次构建时重新运行