c - GNU Make 构建过时且更新于特定时间戳的文件

标签 c build makefile timestamp gnu

我正在使用 GNU Make 3.81 构建给定的 C 项目。 GNU 的正常行为是检查,如果目标存在并且任何先决条件比目标更新,则执行目标命令。

如果先决条件比目标新且比给定时间戳新,是否可以重建目标?比方说,它仅在文件比 2011 年 10 月 2 日更新时才构建。

最佳答案

没有办法直接用 make 来做,但是你可以在规则的 Action 中用 shell 来做:

target: prereq
        touch --date='Oct 2, 2011' .timestamp
        if [ $< -nt .timestamp ]; then         \
            command to rebuild target;        \
        fi

请注意使用 \ 使 if 命令成为单个命令。您还可以使用 else 来处理目标已过期且先决条件也已旧的情况。

关于c - GNU Make 构建过时且更新于特定时间戳的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9399769/

相关文章:

c - 将传输结束写入正在运行的进程的标准输入

javascript - 在 Sublime Text 中模拟警报

c - 使用 -g 在 ArchLinux 中找不到调试符号

c++ - 为什么以下代码的时间复杂度是 O(n^2)?

python - 在 python 中实现 C 的枚举和 union

java - 在 IntelliJ 插件构建期间运行代码生成器

jakarta-ee - gradle:无法为 org.gradle.api.Project 类型的根项目设置只读属性 'module' 的值

c - 使用 libfreenect 编译代码时出现链接器错误

c++ - 如何编译依赖于 C++ 目标文件的 CUDA 共享库?

c++ - C 和 C++ 的优化工具