在使用QT进行开发时,经常遇到一份工程代码在不同的平台进行编译、比如: Android、windows、Linux系统、嵌入式linux系统等。或者一份工程代码编译64位、32位不同的版本。
如果这一份工程代码里有所附带针对平台专用的外部的链接库或者一些头文件、配置文件等等,为方便在同一份工程里进行编译,可以在pro文件里写上条件判断,实现系统区分。
例如:
DEFINES += ANDROID_APP #如果想编译Android版本就执行这行代码,否则就注释掉 if(contains(DEFINES,ANDROID_APP)) { message('运行Android版本') #指定库文件的路径 LIBS += -L$$PWD/ffmpeg_android_arm64 -lavcodec LIBS += -L$$PWD/ffmpeg_android_arm64 -lavfilter LIBS += -L$$PWD/ffmpeg_android_arm64 -lavutil LIBS += -L$$PWD/ffmpeg_android_arm64 -lavdevice LIBS += -L$$PWD/ffmpeg_android_arm64 -lavformat LIBS += -L$$PWD/ffmpeg_android_arm64 -lpostproc LIBS += -L$$PWD/ffmpeg_android_arm64 -lswscale LIBS += -L$$PWD/ffmpeg_android_arm64 -lswresample #指定头文件的路径 INCLUDEPATH+=$$PWD/ffmpeg_android_arm64/include contains(ANDROID_TARGET_ARCH,arm64-v8a) { ANDROID_EXTRA_LIBS = \ $$PWD/ffmpeg_android_arm64/libavcodec.so \ $$PWD/ffmpeg_android_arm64/libavfilter.so \ $$PWD/ffmpeg_android_arm64/libavformat.so \ $$PWD/ffmpeg_android_arm64/libavutil.so \ $$PWD/ffmpeg_android_arm64/libpostproc.so \ $$PWD/ffmpeg_android_arm64/libswresample.so \ $$PWD/ffmpeg_android_arm64/libswscale.so \ $$PWD/ffmpeg_android_arm64/libavdevice.so \ $$PWD/ffmpeg_android_arm64/libclang_rt.ubsan_standalone-aarch64-android.so } }else{ message('运行桌面版本') #指定库的路径 unix:LIBS += -L$$PWD/ffmpeg_x64_shared/lib -lavcodec unix:LIBS += -L$$PWD/ffmpeg_x64_shared/lib -lavfilter unix:LIBS += -L$$PWD/ffmpeg_x64_shared/lib -lavutil unix:LIBS += -L$$PWD/ffmpeg_x64_shared/lib -lavdevice unix:LIBS += -L$$PWD/ffmpeg_x64_shared/lib -lavformat unix:LIBS += -L$$PWD/ffmpeg_x64_shared/lib -lpostproc unix:LIBS += -L$$PWD/ffmpeg_x64_shared/lib -lswscale unix:LIBS += -L$$PWD/ffmpeg_x64_shared/lib -lswresample unix:LIBS += -L$$PWD/ffmpeg_x64_shared/lib -lx264 unix:LIBS += -L$$PWD/ffmpeg_x64_shared/lib #制定头文件的路径 INCLUDEPATH+=$$PWD/ffmpeg_x64_shared/include }