haulm 发表于 2006-2-14 11:32:32

ML正式版重编译Qt开发环境 qt-3.3.6 心得

由于想为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包。

haulm 发表于 2006-2-14 12:14:30

自己顶下,对于Qt环境,我想下个版本应该注意一下profile的设置细节,因为GTK编译环境是不用设置的,而KDE桌面下的Qt环境反而要用户自己设置,这是不合理的。

demonlj 发表于 2006-2-14 12:49:36

profile设置是正确的,再仔细观察下/etc/profile及profile.d目录结构

haulm 发表于 2006-2-14 13:21:14

可能我用词不准,至少少了点什么。 :roll:
页: [1]
查看完整版本: ML正式版重编译Qt开发环境 qt-3.3.6 心得