CMake 是否可以始终强制编译/构建特定文件?

ymo*_*eau 4 cmake

我有一个 C++ 文件,用于__DATE__显示我的应用程序的构建日期。但如果这个文件没有被修改,它就不会被重建,日期也不会被更新。

CMake 总是可以重建该特定文件吗?

显然,使用 makefile 是可能的: How do you force a makefile to重建目标

编辑: CMake 的重复- 始终构建特定文件

tri*_*san 5

您尝试应用的解决方案有点违反 CMake 原则,因为它可能会导致所有依赖目标的重建。

但是,您可以通过这样的方法来实现这一点

add_custom_command(TARGET ${PROJECT_NAME}
        PRE_BUILD
        COMMAND ${CMAKE_COMMAND} -E touch_nocreate ${CMAKE_CURRENT_SOURCE_DIR}/path/file.c) 
Run Code Online (Sandbox Code Playgroud)

使用第二种方法更新:

add_custom_target(file_toucher 
        COMMAND ${CMAKE_COMMAND} -E touch_nocreate ${CMAKE_CURRENT_SOURCE_DIR}/path/file.c)

add_dependencies(${PROJECT_NAME} file_toucher)
Run Code Online (Sandbox Code Playgroud)