|
由于想为Qt加入mysql和pgsql支持,几经修改qt-3.3.6.spec发现其中有
%define plugins_sql -enable-sql -plugin-sql-mysql -plugin-sql-odbc -plugin-sql-psql
其中的我在./configure --help得到的反馈历史中没找到有 -enable-sql 参数
所以改成%define plugins_sql -plugin-sql-mysql -plugin-sql-psql
把%define buildSQL 0改成%define buildSQL 1
因为ML默认没有数据库,我编译安装了mysql和pgsql在/usr/local,所以
删除
%package ODBC
%package MySQL
%package PostgreSQL 几个对包检查定义
删除所有ODBC及odbc的定义
修改# build psql plugin和# build mysql plugin
# build psql plugin
pushd plugins/src/sqldrivers/psql
qmake -o Makefile "INCLUDEPATH+=/usr/local/pgsql/include /usr/local/pgsql/include/server /usr/local/pgsql/include/internal" "LIBS+=-L/usr/local/pgsql/lib -lpq" psql.pro
popd
# build mysql plugin
pushd plugins/src/sqldrivers/mysql
qmake -o Makefile "INCLUDEPATH+= /usr/local/mysql/include/mysql" "LIBS+=-L/usr/local/mysql/lib/mysql -lmysqlclient" mysql.pro
popd
%endif
以上修改后rpmbuild到打包阶段不能执行,发现sql的所有驱动并没有生成,所以删除odbc的所有内容,删除下面
%if %{buildSQL}
%files PostgreSQL
%defattr(-,root,root,-)
%{qtdir}/plugins/sqldrivers/libqsqlpsql*
%files MySQL
%defattr(-,root,root,-)
%{qtdir}/plugins/sqldrivers/libqsqlmysql*
%endif
如此后编译成功后安装rpm包,删除/etc/profile.d/java-profile.sh对PATH的定义,删除magic-misc-profile.sh中PATH的定义,修改/etc/profile
export POSTGRES_HOME=/usr/local/pgsql
PATH=$PATH:$QTDIR/bin:$JAVA_HOME/bin:$POSTGRES_HOME/bin
MANPATH=$QTDIR/man:$POSTGRES_HOME/man
LD_LIBRARY_PATH=$QTDIR/lib:$POSTGRES_HOME/lib:/usr/local/mysql/lib/mysql
LIBRARY_PATH=$QTDIR/lib
CPLUS_INCLUDE_PATH=$QTDIR/include
PGLIB=$POSTGRES_HOME/lib
PGDATA=$POSTGRES_HOME/data
export PATH MANPATH LD_LIBRARY_PATH LIBRARY_PATH CPLUS_INCLUDE_PATH PGLIB PGDATA
进入/usr/src/mBuild/BUILD
进入.../plugins/src/sqldrivers/mysql/ 执行make;make install
进入.../plugins/src/sqldrivers/pgsql/ 执行make;make install
进入.../plugins/src/sqldrivers/sqlite/ 执行make;make install
发现qt.spec中%define styleplugins 0 ,但是后面生效了一个参数 -qt-style-motif
所以进入.../plugins/src/styles下的每个目录执行make;make install
总结:Qt在编译后并没有同时把插件一起编译和安装,必需在编译完成后,再进入相关插件源码目录对插件进行编译安装。
备份生成的rpm包,压缩备份所有生成插件,以便以后重装系统用。
说这么多,主要是提供大家一个Qt开发环境的打造经验。
希望有朋友提醒如何修改spec文档把插件和Qt主要部份集成打包为rpm包。 |
|