对于RaspberryPi,qmake是有条件的

时间:2016-04-26 17:04:06

标签: c++ linux qt raspberry-pi qmake

我正在尝试在RaspberryPi中编译一个qmake .pro文件(不用于交叉编译)。我可以根据平台使用条件定义:

linux-g++-64: {
    message(We are in Linux 64 bits)
}
macx: {
    message(we are in mac osX)
}
win32: ...

但我无法找到一种方法来检测我何时使用带有raspbian的PaspberryPi。

我尝试了类似linux-armarm-linuxlinux-arm-gnueabi-g++的内容,但没有运气。

有人知道制作此条件定义的正确方法,或者如何检测我们是否在RaspberryPi架构中进行编译?

3 个答案:

答案 0 :(得分:4)

这对我有用:

linux {
    contains(QMAKE_HOST.arch, arm.*):{
        raspberry's bla bla bla

    }else{
        ...
    }
}

我希望它适合你。

http://doc.qt.io/qt-5/qmake-variable-reference.html#qmake-host

答案 1 :(得分:1)

当前用于RPi3的Raspbian OS(32位)将QMAKE_HOST.arch报告为armv7l,而较旧的板子\ OS可以报告armv6l

在64位版本(例如用于RaspberryPi的UbuntuMate)上:aarch64

答案 2 :(得分:0)

确定, 它似乎没有人有答案,所以我做了一个适合我的解决方法,如果它适合你,我会很高兴。

在执行qmake时我会聚合一个标志,例如

qmake CONFIG+=MQ_ARM -r

它将执行qmake recursive并将标志传递给每个.pro文件。

在.pro文件中,您可以添加:

MQ_ARM {
    LIBS +=bla bla
    message(USING ARM LIBRARY)
} else:MQ_i686 {
    LIBS +=bla bla
    message(USING 32bits LIBRARY)
}
else {
    LIBS +=bla bla bla
    message(qmake configurated as x86_64 if you want another conf use qmake CONFIG+=MQ_ARM project.pro -
}

你可以分成另一个文件project.pri并包含在包含include(project.pri)的所有子项目.pro文件中

希望它有所帮助!