一个交叉编译Qt5.9的脚本示例

一个交叉编译Qt5.9的脚本示例( 静态编译)

静态编译Qt

#配置Qt 可以参考我的另一篇文章,详细参数讲解 Qt源码编译configure配置参数

#!/bin/sh
#交叉编译QT

AW_LICHEE_ROOT=$PWD/../../../

#当前目录作为构建目录
export QT_BUILD_ROOT=$PWD

#编译后QT安装目录
export QT_INSTALL_DIR=$QT_BUILD_ROOT/Qt-5.9.0

#配置交叉编译工具链 软连接到 /home/wmx/odm_yb/out/sun8iw11p1/linux/common/buildroot/host/opt/ext-toolchain/bin
export PATH=$AW_LICHEE_ROOT/out/sun8iw11p1/linux/common/buildroot/host/usr/bin/:$PATH

#配置sysroot (按照 linux 的标准目录结构查找头文件目录和库文件目录)
export SYSROOT=$AW_LICHEE_ROOT/out/sun8iw11p1/linux/common/buildroot/host/usr/arm-buildroot-linux-gnueabi/sysroot

#配置交叉编译工具链
export CROSS_COMPILE_DIR=$AW_LICHEE_ROOT/out/sun8iw11p1/linux/common/buildroot/host/opt/ext-toolchain

#交叉编译工具链集合
export CROSS_COMPILE=$CROSS_COMPILE_DIR/arm-linux-gnueabi-

#在Qt5时代,QtQuick2 使用的是OpenGL。
#这样一来,Windows下面的问题就出来了:Windows下的显卡驱动支持的是DirectX,默认带的OpenGL版本非常低,基本不能用。
#要解决这个问题,有两种方式:
#1. 确保你安装了支持OpenGL 2 或以上版本的显卡驱动。
#2. 使用Angle将DirectX封装一下,模拟出一套OpenGL接口。
# 至于哪种方式好,自己选。
export CPLUS_INCLUDE_PATH=$PWD/qtbase/src/3rdparty/angle/include:$CPLUS_INCLUDE_PATH

#
export QMAKEDIR=$QT_BUILD_ROOT/qmake

#
export PATH=$CROSS_COMPILE_DIR:$QT_INSTALL_DIR/bin:$PATH


function cqtroot
{
	cd $QT_BUILD_ROOT
}

#配置Qt 可以参考我的另一篇文章,详细参数讲解 Qt源码编译configure配置参数
function makeconfig
{
	#复制gpu库到sysroot 提供编译Qt的依赖库
	cp $AW_LICHEE_ROOT/tools/pack/chips/sun8iw11p1/hal/gpu/fbdev/lib/* $SYSROOT/lib/ -rf

	mkdir -p $QT_INSTALL_DIR

	$QT_BUILD_ROOT/configure \
		-opensource \
		-confirm-license \
		-extprefix $QT_INSTALL_DIR \
		-no-strip \
		-c++std c++11 \
		-static \
		-nomake examples \
		-accessibility \
		-no-sql-db2 -no-sql-ibase -no-sql-mysql -no-sql-oci \
		-no-sql-odbc -no-sql-psql -no-sql-sqlite2  -no-sql-tds \
 		-no-sql-sqlite -plugin-sql-sqlite \
		-no-qml-debug \
		-no-sse2 \
		-no-sse3 \
		-no-ssse3 \
		-no-sse4.1 \
		-no-sse4.2 \
		-no-avx \
		-no-avx2 \
		-no-mips_dsp \
		-no-mips_dspr2 \
		-qt-zlib \
		-no-journald \
		-qt-libpng \
		-qt-libjpeg \
		-qt-freetype \
		-qt-harfbuzz \
		-no-openssl \
		-no-xinput2 \
		-no-xcb-xlib \
		-no-glib \
		-no-pulseaudio \
		-alsa \
		-gui \
		-widgets \
		-v \
		-optimized-qmake \
		-no-cups \
		-no-iconv \
		-evdev \
		-no-icu \
		-no-fontconfig \
		-no-strip \
		-pch \
		-dbus \
		-no-use-gold-linker \
		-xplatform linux-arm-gnueabi-g++ \
		-no-directfb \
		-eglfs \
		-qpa eglfs \
		-linuxfb \
		-no-kms \
		-sysroot $SYSROOT \
		-opengl es2 \
		-no-system-proxies \
		-no-slog2 \
		-no-pps \
		-no-imf \
		-no-lgmon \
		-tslib \
		-gstreamer \
		-device-option CROSS_COMPILE=$CROSS_COMPILE
}

##构建
function makeall
{
	make -j2  -C $QT_BUILD_ROOT
}

##安装
function makeinstall
{
	#本函数使用局部变量 QT_TARGET_INSTALL
	local QT_TARGET_INSTALL=$AW_LICHEE_ROOT/out/sun8iw11p1/linux/common/buildroot/target/usr/local/Qt-5.9.0
	#构建qt安装目录
	mkdir -p $QT_TARGET_INSTALL

	#拷贝编译生成的Qt examples lib plugins qml translations 到安装目录
	cp -rf $QT_INSTALL_DIR/examples \
	$QT_INSTALL_DIR/lib $QT_INSTALL_DIR/plugins $QT_INSTALL_DIR/qml \
	$QT_INSTALL_DIR/translations $QT_TARGET_INSTALL

	#拷贝gpu库到目标平台对应目录 ,target 目录被打包成目标系统升级包
	cp $AW_LICHEE_ROOT/tools/pack/chips/sun8iw11p1/hal/gpu/fbdev/lib/* $AW_LICHEE_ROOT/out/sun8iw11p1/linux/common/buildroot/target/usr/lib/ -rf
	cp $AW_LICHEE_ROOT/tools/pack/chips/sun8iw11p1/hal/gpu/fbdev/bin/* $AW_LICHEE_ROOT/out/sun8iw11p1/linux/common/buildroot/target/bin/ -rf
	make -C $QT_BUILD_ROOT install
}


##清除
function makecleanall
{
	make -C $QT_BUILD_ROOT clean
	rm -rf $QT_INSTALL_DIR
	rm -rf $AW_LICHEE_ROOT/out/sun8iw11p1/linux/common/buildroot/target/usr/local/Qt-5.9.0
	cd $QT_BUILD_ROOT
	rm -rvf	.qmake.super   			    \
			Makefile            		\
			qtactiveqt/.qmake.cache     \
			qtactiveqt/Makefile    		\
        ##省略……一系列的生成文件或 makefile文件
        ##自己补上哈……
	cd -
}

你可能感兴趣的:(QT/QML)