2

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

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

cmake脚本包含以下内容:

INCLUDE(Today)
TODAY(DATE)

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

1 回答 1

2

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

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

这适用于makefile。但是例如,Visual Studio 会在每次构建要求重新加载项目后唠叨你,因为项目文件在磁盘上发生了变化。

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

于 2013-09-26T11:44:52.620 回答