QT 两种库写法 LIBS += .a和LIBS += -L -l

LIBS += <路径>/<库名>.aLIBS += -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.axxx.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 中添加两个路径:

  1. D:/OpenCV/build/include(OpenCV 的根头文件目录)
  2. D:/OpenCV/build/include/opencv2(OpenCV 模块的头文件目录)

补充说明:

  • 反斜杠 \ 必须放在行尾,作为换行连接符
  • 第二行的缩进只是为了美观,不影响语法(可以不缩进)
  • 这种多行写法在配置较长的路径或多个路径时非常实用,能显著提高 .pro 文件的可读性
相关推荐
我叫蒙奇几秒前
husky 和 lint-staged
前端
kyriewen2 分钟前
JavaScript 继承的七种姿势:从“原型链”到“class”的进化史
前端·javascript·ecmascript 6
穷鱼子酱4 分钟前
ElSelect二次封装组件-实现分页(下拉加载、缓存)、回显
前端
科科睡不着5 分钟前
拆解iOS实况照片📷 - 附React web实现
前端
前端老兵AI6 分钟前
Electron 桌面应用开发入门:前端工程师的跨平台利器
前端·electron
胖子不胖7 分钟前
浅析cubic-bezier
前端
reasonsummer12 分钟前
【办公类-133-02】20260319_学区化展示PPT_02_python(图片合并文件夹、提取同名图片归类文件夹、图片编号、图片GIF)
前端·数据库·powerpoint
胡耀超27 分钟前
Web Crawling 网络爬虫全景:技术体系、反爬对抗与全链路成本分析
前端·爬虫·python·网络爬虫·数据采集·逆向工程·反爬虫
阿明的小蝴蝶31 分钟前
记一次Gradle环境的编译问题与解决
android·前端·gradle
Ruihong33 分钟前
【VuReact】轻松实现 Vue 到 React 路由适配
前端·react.js