您尚未登录。

楼主 # 2024-01-05 17:47:00

Gentlepig
会员
注册时间: 2018-10-24
已发帖子: 1,378
积分: 1343.5

同一个pro文件,编译arm版时需要连接额外的库,如何在不来回修改pro文件的前提下,可以切换编译两个版本的qt程序?

在编写arm版上运行的qt程序,当然也想在pc上运行下看看。

但是arm版需要个单独的ssl库,而pc版不需要加入这个库。这该怎么搞呢?

搜了下,可以通CONFIG或DEFINES。比如
DEFINES += XXX
contains(DEFINES, XXX) {
    include xxx
    LIBS += xxx
}

但是这样,我还是需要来回注释或取消注释掉 DEFINES += XXX这一行。
能不能qmake或make时,指定个条件来满足?不想来回修改pro文件。

pc环境是ubuntu,所以不能用win、unix来分辨。

最近编辑记录 Gentlepig (2024-01-06 09:10:07)

离线

#1 2024-01-05 20:30:26

海石生风
会员
所在地: 深圳
注册时间: 2019-07-02
已发帖子: 660
积分: 793
个人网站

Re: 同一个pro文件,编译arm版时需要连接额外的库,如何在不来回修改pro文件的前提下,可以切换编译两个版本的qt程序?

不同平台所使用的构建套件是不同的麻,在套件配置上进行区分即可。
比如,可以在 项目 -> 构建设置 -> 构建的步骤 -> qmake的“额外的参数”着手。
Screenshot_20240105_213328.png
套件的构建配置
Screenshot_20240105_213353.png
.pro工程文件
Screenshot_20240105_213412.png
qmake输出

最近编辑记录 海石生风 (2024-01-05 21:37:40)

离线

#2 2024-01-05 21:48:34

kin
会员
注册时间: 2020-04-06
已发帖子: 31
积分: 75.5

Re: 同一个pro文件,编译arm版时需要连接额外的库,如何在不来回修改pro文件的前提下,可以切换编译两个版本的qt程序?

contains(QT_ARCH, arm){
LIBS += xxx
}

离线

楼主 #3 2024-01-06 08:47:06

Gentlepig
会员
注册时间: 2018-10-24
已发帖子: 1,378
积分: 1343.5

Re: 同一个pro文件,编译arm版时需要连接额外的库,如何在不来回修改pro文件的前提下,可以切换编译两个版本的qt程序?

感谢两位,我没用qt creator,而是直接qmake  xxx.pro,然后再make的。

所以这个额外的参数,DEFINES+=arm或QT_ARCH+=arm,如何在qmake或make时指定?

离线

#4 2024-01-06 09:53:33

晕哥
管理员
注册时间: 2017-09-06
已发帖子: 9,348
积分: 9202

Re: 同一个pro文件,编译arm版时需要连接额外的库,如何在不来回修改pro文件的前提下,可以切换编译两个版本的qt程序?

不同平台用不同的 .pro 文件,把共性写到 .pri 文件





离线

楼主 #5 2024-01-06 10:25:28

Gentlepig
会员
注册时间: 2018-10-24
已发帖子: 1,378
积分: 1343.5

Re: 同一个pro文件,编译arm版时需要连接额外的库,如何在不来回修改pro文件的前提下,可以切换编译两个版本的qt程序?

晕哥 说:

不同平台用不同的 .pro 文件,把共性写到 .pri 文件

是个办法,谢谢。

最近编辑记录 Gentlepig (2024-01-06 10:27:34)

离线

楼主 #6 2024-01-06 13:35:04

Gentlepig
会员
注册时间: 2018-10-24
已发帖子: 1,378
积分: 1343.5

Re: 同一个pro文件,编译arm版时需要连接额外的库,如何在不来回修改pro文件的前提下,可以切换编译两个版本的qt程序?

现在工程目录是这样的:
can2socket.pro   和 src 目录 同级,src目录下有有个src.pro。

现在在can2socket.pro里,DEFINES+=t113,结果传递不到src.pro文件里...

我是想定义两个顶层pro文件,编译时用顶层pro文件分别编译出pc版和arm版。

离线

#7 2024-01-06 15:15:13

海石生风
会员
所在地: 深圳
注册时间: 2019-07-02
已发帖子: 660
积分: 793
个人网站

Re: 同一个pro文件,编译arm版时需要连接额外的库,如何在不来回修改pro文件的前提下,可以切换编译两个版本的qt程序?

Gentlepig 说:

现在工程目录是这样的:
can2socket.pro   和 src 目录 同级,src目录下有有个src.pro。

现在在can2socket.pro里,DEFINES+=t113,结果传递不到src.pro文件里...

我是想定义两个顶层pro文件,编译时用顶层pro文件分别编译出pc版和arm版。

如果不用qtcreator的话,建议用cmake。cmake要灵活点,qmake的限制比较多不灵活,Qt官方也开始放弃qmake转投cmake了。
另外QT_ARCH类似于编译器宏,是内置在编译套件里的。

离线

页脚

工信部备案:粤ICP备20025096号 Powered by FluxBB

感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn