Qt在pro中实现条件编译

Qt在pro中实现条件编译

--小结:自己正在参与的项目中需要一套代码在Windows和Linux下交叉编译,实现中使用了条件编译(#ifdef WINDOWS #endif  #ifdef LINUX endif),然后在选择编译版本的时候在Qt的.pro文件中,编写如下代码:

DEFINES  += WINDOWS
#DEFINES  += LINUX
 
  
if(contains(DEFINES,WINDOWS)){
LIBS += -LE:\KingIOBoxFuChao\MyIOBoxCodes\0826\DyLoadDll -lCreateDll
 
  
 
  
}else{
#动态调用库中的函数需要添勬dl
LIBS=-ldl
}
如上是Windows下的.pro部分代码,如果切换到Linux,只需要将:

DEFINES  += WINDOWS

注释掉,并取消

#DEFINES  += LINUX
的注释即可。

另外,不同平台对应的不同库文件加载等可以使用:

if(contains(DEFINES,WINDOWS)){
 
  
 
  
}else{
}
条件编译选项。


以下是转载的参考文章:

原创 2016年05月13日 09:04:49 1899012
        在用Qt进行嵌入式linux开发时,有时为了调试便利,桌面版linux环境也会配置一份,这样在编译时就会调用不同版本的库。qmake提供很多功能强大的内置函数和变量,为动态编译项目提供了便利。
  方式一:使用contains()
DEFINES += RUN_ON_EMBEDDEDSYSTEM


if(contains(DEFINES,RUN_ON_EMBEDDEDSYSTEM)){#contains和{必须在同一行,否则报错


INCLUDEPATH +=  /root/802/trunk/dsp/c6accel_1_01_00_07/soc/packages \
                /root/802/trunk/dsp/codec-engine_2_26_02_11/packages \
                /root/802/trunk/dsp/framework-components_2_26_00_01/packages \
                /root/802/trunk/dsp/dsplink_1_65_01_05_eng/packages \
                /root/802/trunk/dsp/dsplink_1_65_01_05_eng \
                /root/802/trunk/dsp/xdais_6_26_01_03/packages \
                /root/802/trunk/dsp/linuxutils_2_26_02_05/packages \
                /root/802/trunk/dsp/local-power-manager_1_24_03_10_eng/packages \
                /root/802/trunk/dsp/codecs-omap3530_4_02_00_00/packages \
                /root/802/trunk/tools/xdctools_3_16_03_36/packages \
                /root/802/trunk/dsp/c6accel_1_01_00_07/soc/c6accelw \
                /root/802/trunk/dsp/dmai_2_20_00_15/packages \
                /root/802/trunk/app/ortp-0.24.2/include \
                /root/802/trunk/app/ffmpeg-2.8.2


LIBS += /usr/lib/libjthread.so \
        /usr/lib/libjrtp.so \
}else{
LIBS+= /usr/local/lib/libjthread.so \
       /usr/local/lib/libjrtp.so \
       /usr/local/lib/libavdevice.so\
       /usr/local/lib/libavcodec.so\
       /usr/local/lib/libavfilter.so\
       /usr/local/lib/libavformat.so\
       /usr/local/lib/libavutil.so\
       /usr/local/lib/libpostproc.so\
       /usr/local/lib/libswresample.so\
       /usr/local/lib/libswscale.so\
}
方法二:使用CONFIG 
        CONFIG 变量用于指定工程配置和编译器选项,通常取debug,release,dll等值,也可以自定义选项值, CONFIG变量的每个选项都可以用于条件判断。


CONFIG += qt5  
  
qt5{  
LIBS += -lmydll_qt5  
}else{  
LIBS += -lmydll  
}

你可能感兴趣的:(Qt相关)