伪目标.PHONY
来源:互联网 发布:网络url地址是什么 编辑:程序博客网 时间:2024/05/18 06:22
这次只有一个main.cpp和一个Makefile文件。
main.cpp
- #include <iostream>
- using namespace std;
- int main()
- {
- cout<<"hello world!"<<endl;
- return 0;
- }
Makefile
- main:main.o
- g++ -o main main.o
- main.o:main.cpp
- g++ -c -o main.o main.cpp
我们可以把Makefile这样写:
- main:main.o
- g++ -o main main.o
- main.o:main.cpp
- g++ -c -o main.o main.cpp
- clean:
- rm *.o
为了执行这条规则,我们可以这样make clean,这样就可以删除所有的.o结尾的文件。
但是当目录内没有.o结尾的文件时,这条命令将会报错,并停止往下执行。
我们把Makefile修改成这样,做个试验:
- main:main.o
- g++ -o main main.o
- main.o:main.cpp
- g++ -c -o main.o main.cpp
- clean:
- rm *.o
- echo "clean obj"
多次执行make clean,当目录内已经没有.o结尾的文件时,将会出现下面的错误。
- rm *.o
- rm: cannot remove `*.o': No such file or directory
- make: *** [clean] Error 1
但是这个Makefile中,如果不存在.o文件,竟然会报错,并且终止执行,shit。
我们可以做如下修改:
- main:main.o
- g++ -o main main.o
- main.o:main.cpp
- g++ -c -o main.o main.cpp
- clean:
- -rm *.o
- rm *.o
- rm: cannot remove `*.o': No such file or directory
- make: [clean] Error 1 (ignored)
- echo "clean obj"
- clean obj
- main:main.o
- g++ -o main main.o
- main.o:main.cpp
- g++ -c -o main.o main.cpp
- clean:
- -rm -f *.o
- echo "clean obj"
- rm -f *.o
- echo "clean obj"
- clean obj
但是,不要以为这样就万事OK了,我们在目录内添加一个文件,文件名为clean。
我们再执行make clean,结果竟然是:
- make: `clean' is up to date.
怎么办,可以通过Makefile的关键字.PHONY,它显式声明一个目标文件是伪目标,执行该伪目标时,make并不关心该目标文件是否存在,只管执行。
- main:main.o
- g++ -o main main.o
- main.o:main.cpp
- g++ -c -o main.o main.cpp
- .PHONY:clean
- clean:
- -rm -f *.o
- echo "clean obj"
不管.o文件是否存在,make clean的时候,都不会报错。
0 0
- (makefile).PHONY 伪目标
- makefile .PHONY 伪目标
- 伪目标.PHONY
- 伪目标.PHONY
- Makefile 伪目标.PHONY
- .PHONY makefile中的伪目标
- .PHONY makefile中的伪目标
- .PHONY makefile中的伪目标
- .PHONY makefile中的伪目标
- .PHONY makefile中的伪目标
- .PHONY makefile中的伪目标
- .PHONY makefile中的伪目标
- .PHONY makefile中的伪目标
- .PHONY------makefile中的伪目标
- .PHONY makefile中的伪目标
- PHONY 目标
- Makefile中的PHONY 目标
- makefile PHONY目标
- PHP文件操作
- Java之模式设计
- 第九周项目一(do-while语句)
- 有趣的机器学习:最简明入门指南
- [Erlang危机](5.1.2)CPU
- 伪目标.PHONY
- 第十一周项目6-回文、素数(输出1000以内所以素数)
- 【Leetcode】Same Tree (Tree Judge)
- windows cmd命令显示UTF8设置
- The script creates a MySQLDB user
- android 使用广播监听网络状态
- HTML5已定稿:将彻底颠覆原生应用?
- 数据结构之归并排序(递归实现)
- 关于计算机视觉的随谈