在Qt中添加库文件的时候,Qt会自动在pro文件里生成三行配置
INCLUDEPATH += dir
DEPENDPATH += dir
LIBS += -Ldir -llibxxx
includepath 和 libs作用都比较明确,唯独这个DEPENDPATH的作用不是很清楚,他又和INCLUDEPATH 有什么区别,有点儿稀里糊涂的。
先按照我们的惯常操作,问度娘,但是度娘也没有给出答案,所有提到DEPENDPATH就是一句话,设置依赖路径,这和废话没有任何区别,依赖路径又是干啥的,有什么用呢?
自己测试一下吧。
1.DEPENDPATH
我们知道pro文件是Qt专有的项目配置文件,他的使用方式为,编译时先用qmake根据pro文件生成Makefile文件,再用make执行Makefile完成编译,那我们就看一下Makefile文件有啥区别
假如设置我们只有一个文件main.cpp要编译,DEPENDPATH = xxxx,xxxx里有两个文件dep.h和dep.cpp,对比后发现,加不加DEPENDPATH设置的区别如下:
没有DEPENDPATH设置
debug/main.o: ../../TestBoost/main.cpp
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o debug\main.o ..\..\TestBoost\main.cpp
增加DEPENDPATH设置
debug/main.o: ../../TestBoost/main.cpp def.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o debug\main.o ..\..\TestBoost\main.cpp
根据makefile规则,紧跟在main.o: 后面的文件是编译生成main.o文件时依赖的文件,这个依赖的意思是,如果依赖的文件在main.o文件发生过更改,那么下次编译时main.o需要重新生成,否则无需重新生成
增加DEPENDPTH后,Qt会将该目录下所有的头文件加入到每个cpp文件对应的.o文件的依赖文件里,这样如果DEPENDPATH目录里的头文件发生了变化,所有的cpp都会重新编译
2.INCLUDEPATH
根据上述方式测试INCLUDEPATH,INCLUDEPATH同样会被添加到编译.o文件的依赖文件中,不过INCLUDEPATH还有另一个作用就是,在代码里写#include时可以找到相应的文件,否则编译时会报找不到文件的错误