博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
makefile规则之order-only依赖 ----- |
阅读量:4166 次
发布时间:2019-05-26

本文共 1019 字,大约阅读时间需要 3 分钟。

最近在看caffe的代码,首先不得不说caffe的代码写的这是结构清晰,代码简洁。后续我也会写关于caffe源码解析的博文。今天主要是看一下makefile规则里面的一个order-only依赖规则。


我们都知道makefile构建工程的基本语句是:

targets : prerequisites    command

这句构造语句可以简单理解为,根据prerequisites中的文件,利用command构造规则,构造得到target。makefile的好处只有是当prerequisites中有任何文件发生改变时才重新构造target。但是,有时候我们希望只有当prerequisites中的部分文件改变时才重新构造target。

这就是order-only prerequisites产生的目的。

具有order-only prerequisites的prerequisites具有如下的形式:

targets : normal-prerequisites | order-only-prerequisites

它的功能是,只有第一次构造targets时才会使用order-only-prerequisites,后面即使order-only-prerequisites发生改变,也不会重新构造targets,而只有normal-prerequisites中的文件发生改变时才重新构造targets。

具体我们看一下caffe的makefile里面的一小段用于生成protobuf代码的构造语句:

$(PROTO_BUILD_DIR)/%.pb.o: $(PROTO_BUILD_DIR)/%.pb.cc $(PROTO_GEN_HEADER) \        | $(PROTO_BUILD_DIR)    @ echo CXX $<    $(Q)$(CXX) $< $(CXXFLAGS) -c -o $@ 2> $@.$(WARNS_EXT) \        || (cat $@.$(WARNS_EXT); exit 1)    @ cat $@.$(WARNS_EXT)

这句话的意思是,在第一次构造(PROTO_BUILD_DIR)/%.pb.o时,要先构造PROTO_BUILD_DIR,也就是创建这个目录。后面如果这个目录发生改变,则不需要再重新构造(PROTO_BUILD_DIR)/%.pb.o了。

参考:

转载地址:http://ipqxi.baihongyu.com/

你可能感兴趣的文章
Java集合(6) - LinkedHashMap源码解析
查看>>
Java集合(7) - TreeMap源码解析
查看>>
Java集合(8) - Set与AbstractSet源码解析
查看>>
Java多线程(2) - 多线程之线程安全详解(synchronized、Lock)
查看>>
OKR与CFR管理模式(二)-CFR与OKR的绩效管理
查看>>
Java多线程(3) - 多线程之死锁
查看>>
Java多线程(4) - 多线程之Volatile关键字、ThreadLocal、Atomic系列类、CAS
查看>>
Java多线程(5) - 多线程之线程通讯(一)(wait、notify、join、yield、sleep区别与应用)
查看>>
Java多线程(6) - 多线程之线程通讯(二)(wait与notify案例、守护线程)
查看>>
什么是项目管理?怎么管?(二)
查看>>
Java多线程(7) - 多线程之线程停止方式
查看>>
Java设计模式(1) - 单例设计模式多种写法
查看>>
Java设计模式(2) - 工厂设计模式
查看>>
Java多线程(8) - 同步(并发)类容器详解(CopyOnWrite容器、ConcurrentMap容器、Queue队列容器)
查看>>
Java设计模式(3) - 多线程并发设计模式 - Future设计模式
查看>>
Java设计模式(5) - 多线程并发设计模式 - 生产者-消费者设计模式多种写法
查看>>
Java多线程(9) - 多线程 - 线程池详解与使用示例
查看>>
Java多线程(10) - 多线程 - CountDownLatch、CyclicBarrier、Semaphore使用示例详解
查看>>
Java多线程(11) - 多线程 - 锁详解:重入锁、公平锁、非公平锁、读写锁、不可重入锁、自旋锁、独享锁、共享锁、互斥锁、悲观锁、乐观锁、分段锁、偏向锁、轻量级锁、重量级锁、CAS算法原理
查看>>
Java网络编程(10) - Netty网络编程常见问题与疑问
查看>>