QT 两种库写法 LIBS += .a和LIBS += -L -l
LIBS += <路径>/<库名>.a
和 LIBS += -L<路径> -l<库名>
是两种不同的链接库文件的写法,它们的作用相同但语法和使用场景略有区别:
1. 直接路径写法(LIBS += <完整路径>.a
)
qmake
LIBS += D:/OpenCV/build/x64/mingw/lib/libopencv_core440d.dll.a
- 特点:直接指定库文件的完整路径(包括文件名和
.a
后缀) - 适用场景:
- 当库文件路径比较特殊或不希望链接器搜索其他目录时
- 需要精确指定某个特定版本的库文件时
- 优点:明确指定文件,不会出现路径搜索错误
- 缺点:路径过长时不够简洁,若库文件移动位置需要修改路径
2. 路径 + 库名写法(-L<路径> -l<库名>
)
qmake
LIBS += -LD:/OpenCV/build/x64/mingw/lib/ -lopencv_core440d
- 特点:
-L
用于指定库文件的搜索路径-l
用于指定库名(注意:库名需要省略前缀lib
和后缀.a
/.dll.a
)
- 适用场景:
- 链接同一目录下的多个库文件时(只需指定一次
-L
路径) - 遵循标准命名规范的库文件(
libxxx.a
或xxx.dll.a
)
- 链接同一目录下的多个库文件时(只需指定一次
- 优点:简洁,多个库可共享同一个路径设置
- 缺点:依赖库文件的标准命名,若命名不规范可能导致链接失败
总结
两种写法本质上都是为了让链接器找到并使用指定的库文件,选择哪种取决于你的习惯和场景:
- 单个库或路径特殊时,用直接路径写法更明确
- 多个库且路径统一时,用
-L
+-l
写法更简洁
在 OpenCV 配置中,两种写法可以互换,例如:
qmake
# 直接路径写法
LIBS += D:/OpenCV/build/x64/mingw/lib/libopencv_world440.dll.a# 等效的 -L -l 写法
LIBS += -LD:/OpenCV/build/x64/mingw/lib/ -lopencv_world440
INCLUDEPATH +=D:/OpenCV/build/include \ D:/OpenCV/build/include/opencv2 使用 \包含两个路径
在 QMake 中,使用反斜杠 \
是为了将一行代码拆分成多行书写,使配置更清晰易读。你的写法:
qmake
INCLUDEPATH += D:/OpenCV/build/include \D:/OpenCV/build/include/opencv2
等价于单行写法:
qmake
INCLUDEPATH += D:/OpenCV/build/include D:/OpenCV/build/include/opencv2
这两种写法效果完全相同,都是向 INCLUDEPATH
中添加两个路径:
D:/OpenCV/build/include
(OpenCV 的根头文件目录)D:/OpenCV/build/include/opencv2
(OpenCV 模块的头文件目录)
补充说明:
- 反斜杠
\
必须放在行尾,作为换行连接符 - 第二行的缩进只是为了美观,不影响语法(可以不缩进)
- 这种多行写法在配置较长的路径或多个路径时非常实用,能显著提高
.pro
文件的可读性