QtCreator:特定于工具包的预编译器宏定义

时间:2014-07-23 14:09:42

标签: qt qt-creator qt5

我正在使用QtCreator 3.1.1来构建一个跨平台的项目,所以我安排了不同的编译工具包来定位我的桌面PC和我的BeagleBoneBlack(BBB)。

现在我想在qmake项目文件(.pro)中定义一些宏,这些宏仅针对给定的工具包。

换句话说,我想在我的.pro文件中执行以下操作:

if(kit == BBB)
   DEFINES += MY_BBB_MACRO
elseif(kit == Desktop)
   DEFINES += MY_DESKTOP_MACRO
else
   DEFINES += OTHER_MACRO

有可能吗?我怎么能这样做?

2 个答案:

答案 0 :(得分:11)

我在Qt论坛上获得了一些帮助(看看here)关于这个问题......

无论如何,解决方案包括使用qmake built-in test functions

基本上我在QtCreator的项目管理中添加了一些CONFIG指令:在下面的屏幕截图中,您可以看到您可以看到我在BBB工具包的项目配置中添加了CONFIG+=BBB;我以同样的方式将CONFIG+=AM335xCONFIG+=Desktop添加到AM335x和桌面套件中......

enter image description here

然后,在我的.pro文件中,我添加了类似的内容:

enter image description here

现在在我的源代码中,我可以使用类似#ifdef PLATFORM_BBB#ifdef PLATFORM_AM335X#ifdef PLATFORM_DESKTOP的内容来区分程序行为,具体取决于编译工具包。

答案 1 :(得分:3)

我找到了另一种解决方案。

首先,使用工具包的CONFIG+=Variable名称在项目中添加其他参数。

screen capture from Project setting

在.pro文件中,编写如下代码。

Desktop {
    message("Desktop is selected")
}

RPI {
    message("rpi is selected")
    target.path = /home/pi
    INSTALLS += target
}

如果查看常规消息选项卡,可以看到设置正常。