【发布时间】:2022-07-08 19:03:58
【问题描述】:
我的问题与Can CMake always force the compilation/build of a specific file?中的问题大致相同
我有一个使用
__DATE__的 C++ 文件来显示我的应用程序的构建日期。但是如果不修改这个文件,就不会重建,也不会更新日期。CMake 能否始终重建该特定文件?
...除了我想要一些稍微不同的东西:
在我拥有的 CMake 项目中(对于 C,转译为我使用的 Makefile),有时当我运行 make 时,代码没有实际更改,这可以很好地检测到,因为没有重新编译(或重新链接)程序。
显然,在这种情况下,我确实不想要更新时间戳,并最终得到一个新的可执行文件,除了构建日期之外,它与前一个相同。 p>
我在引用的帖子中看到,只需确保文件上的时间戳已更改,即可强制重新编译。所以,假设我的__DATE__ 使用在use_date.c 中,我想要的是use_date.c 的时间戳被更新(强制重新编译),只有在项目中的任何其他文件(例如,main.c)已更改,因此它会强制重新编译和链接项目(显然,如果我只是手动更改 use_date.c 而没有其他文件,这也应该有效)。
所以,假设我的项目只生成一个可执行文件(没有库):
add_executable(my_project use_date.c other_file.c main.c)
...是否可以添加一个 CMake 步骤,更新 use_date.c 的时间戳(从而导致其重新编译),除非项目正在重新编译和重新链接?
【问题讨论】:
-
如果没有构建目标,不确定是否会执行
PRE_BUILDevent。它也仅限于某些生成器...
标签: cmake