生成生成文件后缀名的说明。这只是泛泛而谈,实际发现跟编译器有关。比如在windows系统上用MinGW,可能静态库还是a后缀。
文件 | 静态库 | 动态库 | 目标文件 |
---|---|---|---|
LINUX | a | so | o |
WINDOWS | lib | dll | obj |
在.pro
文件中,INCLUDEPATH用于引入外部库的头文件,LIBS用于引入库文件。
部库的头文件在工程目录下(也就是跟.pro在同一级目录下),那么可以使用$$PWD这个变量代替绝对路径:
INCLUDEPATH += $$PWD/datafile
LIBS用于引入库,-L表示引入库目录,小写的-l表示引入库的名称,且无需将库的后缀写上,Qt会自动根据系统去分析库的后缀。
LIBS += -L$$PWD/../../bin/ -lCustomTableQuery
注意linux上似乎SUBDIRS中的顺序有要求。所以最好先写库项目,再写app项目。
或者如下:
MainMaterialsManagement.depends = BaseDmSql
- TARGET = LooseStorage #生成库的名字
- TEMPLATE = lib #库项目
-
- CONFIG(debug,debug|release) { #库文件放的位置
- DESTDIR = $$PWD/../../bin/plugins
- }else {
- DESTDIR = $$PWD/../../bin/plugins
- }
如果静态库和动态库进行了修改,库都会重新编译。但使用上有所不同。
对于动态库,使用库的代码生成程序后,能够正确链接到修改之后的库。
对于静态库,由于使用库的代码没有变化,所以使用库的代码不会重新编译,因此该代码生成的程序中仍然包含的是修改之前的静态库。要使用修改之后的静态库,就必须让使用静态库的代码重新编译。例如在使用库的代码中随便插入一个空白行等。