Qt跨平台编译时在pro文件中做一些区分处理
Qt跨平台使用,需要在不同平台环境下重新再编译一次代码。
有时在不同平台会引用不同的库(或版本),或者在不同的平台有不同的定义等,如果每次切换时通过在Pro文件中做操作(通过屏蔽或开放一些项的方式),过于繁琐,而且有时不重新再构建一次会不生效,为此可在Pro文件中用下述方式:
ISARM=$${QMKESPEC}
isEqual(ISARM, "/usr/.../mkspecs/x-g++"){ #这里""中填自己的ARM编译时QMAKESPEC环境变量选择
#...这里可以填ARM编译时的定义或引用
#DEFINES += __ENABLE_XX__
#SOURCES += ...
#HEADERS += ...
}else{
#....这里可以填非ARM编译时的定义或引用
}
contains(DEFINES, __ENABLE_XX__) { #这里可以对是否有__ENABLE_XX__的定义做一些区分
#QT += ...
#SOURCES += ...
#HEADERS += ...
}
上述通过增加一个变量ISARM,来比较当前加载的Kits是不是ARM编译;通过比较是否有__ENABLE_XX__的定义,也可以加载一些不同的库或模块;
如此上述做完之后,跨平台编译,就仅需要在项目里选择不同Kits,然后点击编译并运行按钮就可以了。
浙公网安备 33010602011771号