在我的cmake
脚本中,我确定当前日期并将其交给我的c++
程序源,以便将构建日期编译到程序中。问题是,在随后的make
运行中,cmake
根本没有运行,日期不会更新。
如何强制cmake
刷新其变量并仅使用make
重新编译程序?或者:将构建日期编译为二进制文件的最佳方法是什么?
cmake
脚本包含以下内容:
INCLUDE(Today)
TODAY(DATE)
ADD_DEFINITIONS(
...
-DBUILD_DATE="${DATE}"
)
您可以使用
自定义目标来执行所需的任何内容。 自定义目标始终被视为过时,并在每次生成时运行。
add_custom_target(RerunCmake ${CMAKE_COMMAND} ${CMAKE_SOURCE_DIR})
add_dependencies(YourTarget RerunCmake)
但是,例如,Visual Studio会在每次生成后要求您重新加载项目,因为项目文件在磁盘上发生了更改。
也许最好创建一个自定义目标,该目标仅使用正确的日期更新头文件,以便 cmake 不会在每次构建时重新运行