Qt Creator中根据为Windows系统还是Linux系统对源码进行条件编译

Posted rainbow70626

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Qt Creator中根据为Windows系统还是Linux系统对源码进行条件编译相关的知识,希望对你有一定的参考价值。

方法1:
在.h和.cpp文件中,针对需要不同平台编译的代码:添加上如下的条件编译指令:
#ifdef 标识符
    程序段1
#else
    程序段2
#endif 

举例说明如下:

//Windows系统包含头文件名不区分大小写,但是Linux系统包含头文件名区分大小写,故采用条件编译
#ifdef unix
    #include "mainwindow.h"
#else
    #include "MainWindow.h"
#endif
在*.pro文件中,添加如下的宏定义:
DEFINES +=unix

 

方法2:

在使用iar,keil写单片机时,都可以先#define一个变量,然后根据变量的不同值编译不同的代码

在Qt里也可以这样,针对嵌入式的程序,一般是会在X86上编译,Debug,然后再部署到ARM去跑,这样,X86与ARM之间,可能就会有一些差异,如不同的平台,调用不同的库,这样就可以先#define一个变量,再根据变量去自动包含需要编译的东西。

首先在Project settings里增加build 参数DEFINES:如我增加专门针对ARM板上跑的参数DEFINES+=ARM

 在源文件里就可以直接使用条件判断

#ifdef ARM 
    // arm use only 
    QWSServer::setCursorVisible(false); 
#endif

在pro文件里也可以使用:


if(contains(DEFINES,ARM)){ 
    message("compile for arm") 
    LIBS += -L../armlib -lfpp 
}else{ 
    message("compile for x86") 
    LIBS += -L../x86lib -lfpp 
}

参考链接:

1、QT工程文件的条件编译选择与额外的编译参数配置

2、Qt 根据不同平台的条件编译

3、qt条件编译debug和release版本--qmake之CONFIG(debug, debug|release)

 

以上是关于Qt Creator中根据为Windows系统还是Linux系统对源码进行条件编译的主要内容,如果未能解决你的问题,请参考以下文章

在 Qt Creator (Windows) 中构建 Qt 库的问题

Qt Creator 作为嵌入式 Linux 的调试系统

如何根据 cmak 在 qt creator 中使用 opencv Cuda

在 Windows Qt Creator 上,我在哪里输入“cd”“nmake”和“configure”等命令

Qt Creator下载和安装(详细教程)

Qt Creator下载和安装(详细教程)