Qt设置根据编译器不同链接不同的lib库

13 篇文章 0 订阅

我们知道Qt的pro工程文件中可以编写编译条件,根据不同的条件生成不同的编译指令,常用的是根据系统的不同包含不同的源文件,如

win32 {
    HEADERS += windows.h
}
linux {
    HEADERS += linux.h
}

除了源文件,链接的lib文件也需要在pro中指定,而在windows平台中,可选的编译器有msvc和mingw两种,且这两种编译器的库文件不能通用,那么我们怎么在pro文件中根据编译器的不同包含不同的lib库文件呢,pro文件中我们可以通过CONFIG+=的形式定义自己的条件,如增加

CONFIG += mingw-cc

我们就可以像用这个来做判断

mingw-cc {
    LIBS += -Lmingw -ltest
} else {
    LIBS += -Lvs -ltest
}

这样就可以连接不同的lib库文件了,但是需要手动更改CONFIG设置,那么Qt有没有内置的表示当前编译器类型的CONFIG变量呢,网上没找到完整的qmake或pro文件的说明文档,我们怎么才能知道CONFIG的预定义值都有啥呢?

我们知道pro中可以通过$${var}的形式引用预定义变量,而pro文件最终会通过qmake编译成makefile文件,这个makefile的内容是会落盘的,是我们能看见的,那么我们增加如下定义

DEFINES += Q_CONFIG=$${CONFIG}

编译一下,看生成的makefile中DEFINES的值,找到Q_CONFIG的定义如下

-DQ_CONFIG=lex yacc debug exceptions depend_includepath testcase_targets import_plugins import_qpa_plugin windows file_copies qmake_use qt warn_on release link_prl debug_and_release debug_and_release_target precompile_header shared release no_plugin_manifest win32 mingw gcc copy_dir_files debug DebugBuild Debug build_pass debug qml_debug debug DebugBuild Debug build_pass

等号后面就是CONFIG的默认值了,我们发现其中有mingw和gcc的定义,那么我们就可以直接通过mingw和gcc来判断编译器类型了,不用自己定义了

mingw {
    LIBS += -Lmingw -ltest
} else {
    LIBS += -Lvs -ltest
}

换成msvc版的qt应该有msvc的预定义值,值的具体是啥我就不看了,还得换Qt版本,有mingw和gcc就够用了。

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值