試行錯誤を繰り返して、私は別の自転車を発明しました。これは、DebianおよびRpmベースのシステム用のQtプロジェクト、Ubuntu / DebianからのWindowsからパッケージをビルドすることについて説明します。 原則として、この方法は非常に単純であるため、小さな変更を加えるとrpbベースのディストリビューションにも適しており、Windowsシステムではcygwinのインストールが必要になると思います。パッケージは簡単なタスクです。この資料に興味がある人は次のとおりです。
- 主に、ユーザーフレンドリーな方法でアプリケーションを配布したい初心者のQt開発者向け。
- 他のプログラミング言語を使用する開発者(わずかな変更を加えることができます。
以下に説明するすべてのアクションはmakeスクリプトで実行できると確信していますが、現在のバージョンも良好であり、存在する権利があります。また、他の方法を使用してプロジェクトを自動的にビルドする場合は、それを説明してください。 最後に、このトピックに関する可能な限り多くの情報を収集したいと思います。
小さな紹介。 この記事では、先ほど
ここで書いたオープンソースプロジェクト用の既製のスクリプトを提供し
ます 。
パート1.インストールと構成そして、まず、次のパッケージをインストールする必要があります。
sudo aptitude install build-essential dh-make mingw32 alien wine qt4-dev-tools
ここでいくつかのパッケージを追加するのを忘れているかもしれませんが、スクリプトを実行するときに不足していることがわかります。PATHおよびLD_LIBRARY_PATHで、サイトからダウンロードしたQt-Sdkのqmakeおよびqtノキア
たとえば、パスを
〜/ .bashrcに記述します。
export PATH =〜/ qtsdk-2010.01 / qt / bin /:$ PATH
export LD_LIBRARY_PATH =〜/ qtsdk-2010.01 / qt / lib /:$ LD_LIBRARY_PATH
また、ワインの下に
Nullsoft Scriptable Install Systemをダウンロードしてインストールする必要がありますが、Windows用のインストールパッケージを作成するために必要になります。
ワインの編集
EnvironmentキーをHKEY_CURRENT_USERに追加します。ここで、2つの文字列値を作成します。
- NSISDIR-C:\ Program Files \ NSIS
- パス-C:\ Program Files \ NSIS
このような簡単な手順の結果として、任意のディレクトリでwine makensisを呼び出すことができます。これにより、将来makensisへの完全なパスを示すことを拒否できます。
パート2. LinuxでのWindows用qtプロジェクトの スクリプトの作成クロスコンパイルには、すでにインストールされているmingw32と、qmakeの独自の構成設定が必要です。これに基づいてqmakeの構成を見つけることができます。次の方法:
$ QT_SDK_INSTALL_DIR / qt / mkspecs。
プロジェクトのディレクトリにwin32-g ++をコピーし、名前をwin32-x-g ++に変更します。 次に、qmake.confを編集して、mingw32呼び出し、WindowsコマンドをLinuxコマンドに置き換えます。
<pre>
#
#win32-g ++のqmake構成
#
#MinGW用に作成
#
MAKEFILE_GENERATOR = MINGW
TEMPLATE =アプリ
CONFIG + = qt warn_on release link_prl copy_dir_files debug_and_release debug_and_release_target precompile_header
QT + =コアGUI
DEFINES + = UNICODE QT_LARGEFILE_SUPPORT
QMAKE_COMPILER_DEFINES + = __GNUC__ WIN32
QMAKE_EXT_OBJ = .o
QMAKE_EXT_RES = _res.o
QMAKE_CC = gcc
QMAKE_LEX =フレックス
QMAKE_LEXFLAGS =
QMAKE_YACC = byacc
QMAKE_YACCFLAGS = -d
QMAKE_CFLAGS =
QMAKE_CFLAGS_DEPS = -M
QMAKE_CFLAGS_WARN_ON =-壁
QMAKE_CFLAGS_WARN_OFF = -w
QMAKE_CFLAGS_RELEASE = -O2
QMAKE_CFLAGS_DEBUG = -g
QMAKE_CFLAGS_YACC =-未使用-Wno-かっこ
QMAKE_CXX = i586-mingw32msvc-g ++
QMAKE_CXXFLAGS = $$ QMAKE_CFLAGS
QMAKE_CXXFLAGS_DEPS = $$ QMAKE_CFLAGS_DEPS
QMAKE_CXXFLAGS_WARN_ON = $$ QMAKE_CFLAGS_WARN_ON
QMAKE_CXXFLAGS_WARN_OFF = $$ QMAKE_CFLAGS_WARN_OFF
QMAKE_CXXFLAGS_RELEASE = $$ QMAKE_CFLAGS_RELEASE
QMAKE_CXXFLAGS_DEBUG = $$ QMAKE_CFLAGS_DEBUG
QMAKE_CXXFLAGS_YACC = $$ QMAKE_CFLAGS_YACC
QMAKE_CXXFLAGS_THREAD = $$ QMAKE_CFLAGS_THREAD
QMAKE_CXXFLAGS_RTTI_ON = -frtti
QMAKE_CXXFLAGS_RTTI_OFF = -fno-rtti
QMAKE_CXXFLAGS_EXCEPTIONS_ON = -fexceptions -mthreads
QMAKE_CXXFLAGS_EXCEPTIONS_OFF = -fno-exceptions
QMAKE_INCDIR =
QMAKE_INCDIR_QT = $$ [QT_WIN_INCLUDE_PATH]
QMAKE_LIBDIR_QT = $$ [QT_WIN_LIB_PATH]
QMAKE_RUN_CC = $(CC)-c $(CFLAGS)$(INCPATH)-o $ obj $ src
QMAKE_RUN_CC_IMP = $(CC)-c $(CFLAGS)$(INCPATH)-o $ @ $ <
QMAKE_RUN_CXX = $(CXX)-c $(CXXFLAGS)$(INCPATH)-o $ obj $ src
QMAKE_RUN_CXX_IMP = $(CXX)-c $(CXXFLAGS)$(INCPATH)-o $ @ $ <
QMAKE_LINK = i586-mingw32msvc-g ++
QMAKE_LINK_C = gcc
QMAKE_LFLAGS = -mthreads -Wl、-enable-stdcall-fixup -Wl、-enable-auto-import \
-Wl、-enable-runtime-pseudo-reloc -mwindows
QMAKE_LFLAGS_EXCEPTIONS_ON = -mthreads -Wl
QMAKE_LFLAGS_EXCEPTIONS_OFF =
QMAKE_LFLAGS_RELEASE = -Wl、-s
QMAKE_LFLAGS_DEBUG =
QMAKE_LFLAGS_CONSOLE = -Wl、-subsystem、コンソール
QMAKE_LFLAGS_WINDOWS = -Wl、-subsystem、windows
QMAKE_LFLAGS_DLL = -shared
QMAKE_LINK_OBJECT_MAX = 10
QMAKE_LINK_OBJECT_SCRIPT = object_script
QMAKE_LIBS =
QMAKE_LIBS_CORE = -lkernel32 -luser32 -lshell32 -luuid -lole32 -ladvapi32 -lws2_32
QMAKE_LIBS_GUI = -lgdi32 -lcomdlg32 -loleaut32 -limm32 -lwinmm -lwinspool -lws2_32 -lole32 -luuid -luser32 -ladvapi32
QMAKE_LIBS_NETWORK = -lws2_32
QMAKE_LIBS_OPENGL = -lopengl32 -lglu32 -lgdi32 -luser32
QMAKE_LIBS_COMPAT = -ladvapi32 -lshell32 -lcomdlg32 -luser32 -lgdi32 -lws2_32
QMAKE_LIBS_QT_ENTRY = -lmingw32 -lqtmain
!isEmpty(QMAKE_SH){
MINGW_IN_SHELL = 1
QMAKE_DIR_SEP = /
QMAKE_COPY = cp
QMAKE_COPY_DIR = xcopy / s / q / y / i
QMAKE_MOVE = mv
QMAKE_DEL_FILE = rm
QMAKE_MKDIR = mkdir
QMAKE_DEL_DIR = rmdir
QMAKE_CHK_DIR_EXISTS =テスト-d
} else {
QMAKE_COPY =コピー/ y
QMAKE_COPY_DIR = xcopy / s / q / y / i
QMAKE_MOVE =移動
QMAKE_DEL_FILE = del
QMAKE_MKDIR = mkdir
QMAKE_DEL_DIR = rmdir
QMAKE_CHK_DIR_EXISTS =存在しない場合
}
QMAKE_MOC = $$ [QT_INSTALL_BINS] $$ {DIR_SEPARATOR} moc
QMAKE_UIC = $$ [QT_INSTALL_BINS] $$ {DIR_SEPARATOR} uic
QMAKE_IDC = $$ [QT_INSTALL_BINS] $$ {DIR_SEPARATOR} idc
QMAKE_IDL = midl
QMAKE_LIB = ar -ru
QMAKE_RC = i586-mingw32msvc-windres
QMAKE_ZIP = zip -r -9
QMAKE_STRIP = i586-mingw32msvc-strip
QMAKE_STRIPFLAGS_LIB + = ---ストリップ不要
ロード(qt_config)
クロスコンパイルの詳細については、
こちらをご覧ください 。
プロジェクトファイル(.pro)を編集します。 ファイル内のこれらの追加は、qmakeによって生成されたMakefileにインストールオプションを表示するために必要です。
<pre>
unix {
#変数
isEmpty(PREFIX):PREFIX = / usr / local #PREFIXはインストールパスです
BINDIR = $$ PREFIX / bin#バイナリへのパス
DATADIR = $$ PREFIX / share#オプトアウトできるアプリケーションのさまざまなコンポーネントへのパス
DEFINES + = DATADIR = \ "$$ DATADIR \" \
PKGDATADIR = \ "$$ PKGDATADIR \"
#インストールする
インストール+ =ターゲット\
デスクトップ\
ピックスマップ\
icon22 \
templates1 \
templates2 \
pagetemplates#INSTALLSにターゲットのみを残し、同様に、必要なディレクトリにライブラリのインストールを追加できます
target.path = $$ BINDIR
desktop.path = $$ DATADIR /アプリケーション/
desktop.files + = $$ {TARGET} .desktop
pixmaps.path = $$ DATADIR / pixmaps /
pixmaps.files + = images / $$ {TARGET} .png
icon22.path = $$ DATADIR /アイコン/ hicolor / 22x22 /アプリ/
icon22.files + = images / $$ {TARGET} .png
templates1.path = $$ DATADIR / yourownnewsmaker / templates / default /
templates1.files =テンプレート/デフォルト/*.*
templates2.path = $$ DATADIR / yourownnewsmaker /テンプレート/ eeex-sony-pdf /
templates2.files = templates / eeex-sony-pdf /*.*
pagetemplates.path = $$ DATADIR / yourownnewsmaker / page-templates /
pagetemplates.files = page-templates /*.*
}
Windowsアプリケーションに独自のアイコンを持たせる場合は、プロジェクトファイルに次の行を追加する必要があります。
win32:RC_FILE = icons.rc
そして、以下の内容でicons.rcファイルを作成します
IDI_ICON1 ICON DISCARDABLE「パス/ / / your / icon.ico」
debパッケージをビルドします。 制御ファイルと変更ログファイルは非常に標準的なものであり、もう一度説明する必要はないと思います。 スクリプトを使用してアーカイブをダウンロードすると、ファイルの例を見ることができますが、すべてのスクリプトでタブが使用されているわけではないことに注意してください。 これはNSISにとってもdh_make.Rulesにとっても非常に重要です。しかし、結果としてAPPNAMEのみを指定する必要がある非常に普遍的なファイルが得られます。
<pre>
#!/ usr / bin / make -f
APPNAME:= yourownnewsmaker
builddir:
mkdir -p builddir
builddir / makefile:builddir
cd builddir && qmake-qt4 PREFIX = / usr ../$(APPNAME).pro -spec linux-g ++ -r
ビルド:ビルドスタンプ
ビルドスタンプ:builddir / Makefile
dh_testdir
#ここにコマンドを追加して、パッケージをコンパイルします。
cd builddir && $(作成)
$ @をタッチ
きれいな:
dh_testdir
dh_testroot
rm -f build-stamp
#ここにコマンドを追加して、ビルドプロセス後にクリーンアップします。
rm -rf builddir
dh_clean
インストール:ビルド
dh_testdir
dh_testroot
dh_clean -k
dh_installdirs
#ここにコマンドを追加して、パッケージをdebian / your_appnameにインストールします
#cd builddir && $(MAKE)インストール
cd builddir && $(MAKE)INSTALL_ROOT = $(CURDIR)/ debian / $(APPNAME)install
#cd builddir && $(MAKE)インストール
binary-indep:ビルドインストール
binary-arch:ビルドインストール
dh_testdir
dh_testroot
dh_installdocs
dh_installexamples
dh_installman
dh_link
dh_compress
dh_fixperms
dh_installdeb
dh_shlibdeps
dh_gencontrol
dh_md5sums
dh_builddeb
バイナリ:binary-indep binary-arch
.PHONY:clean binary-indep binary-arch binary install configuregeをビルドします
変更ログ-以下は一例です。ファイルはタブを使用しないことに注意してください。
<pre>
yourownnewsmaker(1.3)カルマ; 緊急度=低
*ソニーの電子書籍リーダー用の新しいテンプレートを追加。
*テンプレートに新しいファイルpdf-print.propertiesを追加。
* Windowsのインストーラーを修正。
-Valery Konchin <eeexception@gmail.com>月、2010年3月1日00:00:00 +0300
ここでは、qtプロジェクトからdebパッケージを作成する方法についてもう少し読むことができます。
Windows用のNSISスクリプト。 このスクリプトは例に基づいて作成しましたが、余分なものは一切含まれておらず、ライセンスの表示、インストールパスの選択、およびアプリケーション自体のインストールのみを行っています。
<pre>
; 古い選択セクションをオフにする
; 12.06.2005:ルイス・ウォン
; インストーラーのテンプレートを作成します。
; EasyPlayerインストーラーの特別な機能。
; Trimedia Interactiveプロジェクト
; -------------------------------
; 開始する
!MUI_PRODUCT "yourownnewsmaker"を定義します
!MUI_FILE "yourownnewsmaker"を定義します
!MUI_VERSION "1.3"を定義します
!MUI_BRANDINGTEXTを定義する「自分の新しいメーカーVer。$ {MUI_VERSION}」
CRCCheckオン
; Bij deze moeten we waarschijnlijk een absoluut pad gaan gebruiken
; モット・エフ・イッゲテスト・ワード
!include "$ {NSISDIR} \ Contrib \ Modern UI \ System.nsh"
; --------------------------------
;一般
名前「$ {MUI_BRANDINGTEXT}」
OutFile "../yourownnewsmaker-install-v.${MUI_VERSION►.exe"
ShowInstDetails "nevershow"
ShowUninstDetails "nevershow"
; SetCompressor "bzip2"
!MUI_ICON "images / yourownnewsmaker.ico"を定義します
!MUI_UNICON "images / yourownnewsmaker.ico"を定義します
;!MUI_SPECIALBITMAP "Bitmap.bmp"を定義します
; Windows Vistaのアプリケーション特権を要求する
RequestExecutionLevelユーザー
; --------------------------------
;フォルダ選択ページ
InstallDir "$ PROGRAMFILES \ $ {MUI_PRODUCT}"
; --------------------------------
;最新のUI設定
!MUI_WELCOMEPAGEを定義する
!MUI_LICENSEPAGEを定義する
!MUI_DIRECTORYPAGEを定義する
!MUI_ABORTWARNINGを定義する
!MUI_UNINSTALLERを定義する
!MUI_UNCONFIRMPAGEを定義する
!MUI_FINISHPAGEを定義する
; --------------------------------
;ページ
!insertmacro MUI_PAGE_WELCOME
!insertmacro MUI_PAGE_LICENSE "ライセンス"
!insertmacro MUI_PAGE_COMPONENTS
!insertmacro MUI_PAGE_DIRECTORY
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_PAGE_FINISH
!insertmacro MUI_UNPAGE_WELCOME
!insertmacro MUI_UNPAGE_CONFIRM
!insertmacro MUI_UNPAGE_INSTFILES
!insertmacro MUI_UNPAGE_FINISH
; --------------------------------
;言語
!insertmacro MUI_LANGUAGE "英語"
; --------------------------------
;最新のUIシステム
;!insertmacro MUI_SYSTEM
! "MUI2.nsh"を含む
; --------------------------------
;データ
LicenseData "ライセンス"
; --------------------------------
;インストーラーセクション
セクション「Your Own News Maker(必須)」
;ファイルを追加する
SetOutPath "$ INSTDIR"
ファイル「$ {MUI_FILE} .exe」
ファイル「* .dll」
ファイル「ライセンス」
「変更」ファイル
SetOutPath "$ INSTDIR \ page-templates"
ファイル "page-templates \ *。properties"
SetOutPath "$ INSTDIR \ templates \ eeex-sony-pdf"
ファイル "templates \ eeex-sony-pdf \ *。*"
SetOutPath "$ INSTDIR \ templates \ default"
ファイル "templates \ default \ *。*"
;ファイル「templates \ *。html」
; ファイル "page-templates \ *。properties"
; SetOutPath "$ INSTDIR \ data"
; ファイル「data \ *。cst」
; ファイル「data \ errorlog.txt」
; hier komen dan nog de bestanden die in deプレイリストstaan
; SetOutPath "$ INSTDIR"
; ファイル/ r mpg
; SetOutPath "$ INSTDIR"
; ファイル/ r xtras
;デスクトップショートカットを作成する
CreateShortCut "$ DESKTOP \ $ {MUI_PRODUCT} .lnk" "$ INSTDIR \ $ {MUI_FILE} .exe" ""
;スタートメニュー項目を作成する
CreateDirectory "$ SMPROGRAMS \ $ {MUI_PRODUCT}"
CreateShortCut "$ SMPROGRAMS \ $ {MUI_PRODUCT} \ Uninstall.lnk" "$ INSTDIR \ Uninstall.exe" "" "$ INSTDIR \ Uninstall.exe" 0
CreateShortCut "$ SMPROGRAMS \ $ {MUI_PRODUCT} \ $ {MUI_PRODUCT} .lnk" "$ INSTDIR \ $ {MUI_FILE} .exe" "" "$ INSTDIR \ $ {MUI_FILE} .exe" 0
;レジストリにアンインストール情報を書き込む
WriteRegStr HKLM "ソフトウェア\ Microsoft \ Windows \ CurrentVersion \アンインストール\ $ {MUI_PRODUCT}" "DisplayName" "$ {MUI_PRODUCT}(削除のみ)"
WriteRegStr HKLM "ソフトウェア\ Microsoft \ Windows \ CurrentVersion \ Uninstall \ $ {MUI_PRODUCT}" "UninstallString" "$ INSTDIR \ Uninstall.exe"
WriteUninstaller "$ INSTDIR \ Uninstall.exe"
セクションエンド
; --------------------------------
;アンインストーラーセクション
セクション「アンインストール」
;ファイルを削除する
RMDir / r "$ INSTDIR \ *。*"
;インストールディレクトリを削除します
RMDir "$ INSTDIR"
; [スタート]メニューのショートカットを削除
「$ DESKTOP \ $ {MUI_PRODUCT} .lnk」を削除します
「$ SMPROGRAMS \ $ {MUI_PRODUCT} \ *。*」を削除します
RmDir "$ SMPROGRAMS \ $ {MUI_PRODUCT}"
;アンインストーラーとレジストリエントリの削除
DeleteRegKey HKEY_LOCAL_MACHINE "ソフトウェア\ $ {MUI_PRODUCT}"
DeleteRegKey HKEY_LOCAL_MACHINE "ソフトウェア\ Microsoft \ Windows \ CurrentVersion \ Uninstall \ $ {MUI_PRODUCT}"
セクションエンド
; --------------------------------
; MessageBoxセクション
;インストールが正常に終了したときにメッセージボックスを呼び出す関数
関数.onInstSuccess
MessageBox MB_OK「$ {MUI_PRODUCT}を正常にインストールしました。デスクトップアイコンを使用してプログラムを起動してください。」
Functionend
関数un.onUninstSuccess
MessageBox MB_OK「$ {MUI_PRODUCT}を正常にアンインストールしました。」
Functionend
; eof
自動アセンブリ用のスクリプト。 Linuxパッケージ:
<pre>
#!/ bin / sh
#
#
BUILDDATE = $(日付+%F)
MAJORVERSION = `sed '/ ^ \#/ d' version.properties | grep 'メジャー' | テール-n 1 | sed 's /^.*=//; s / ^ [[:space:]] * //; s / [[:space:]] * $ //' '
マイナーバージョン= `sed '/ ^ \#/ d' version.properties | grep 'マイナー' | テール-n 1 | sed 's /^.*=//; s / ^ [[:space:]] * //; s / [[:space:]] * $ //' '
echo "バージョン:$ MAJORVERSION。$ MINORVERSION"
echo "ビルド日付:$ BUILDDATE"
BASEDIR = "./"
DEPLOYDIR = "deploy / yourownnewsmaker- $ MAJORVERSION。$ MINORVERSION"
PLATFORMDIR = "linux"
BUILDNAME = "yourownnewsmaker- $ MAJORVERSION。$ MINORVERSION"
RELEASEDIR = "$ DEPLOYDIR / $ PLATFORMDIR / $ BUILDNAME"
echo "ビルドディレクトリ:$ RELEASEDIR"
rm -rf $ DEPLOYDIR / $ PLATFORMDIR /
mkdir -p "$ DEPLOYDIR / $ PLATFORMDIR"
svn export ./ $ RELEASEDIR
cd $ RELEASEDIR
sed -i "s /%test-major-version%/ $ MAJORVERSION / g" version.cpp
sed -i "s /%test-minor-version%/ $ MINORVERSION / g" version.cpp
sed -i "s /%test-date%/ $ BUILDDATE / g" version.cpp
rm -rf * .rc
rm -rf build-libs
rm -rf win32-x-g ++
rm -rf linux-g ++-qt4.5
rm -rf * .user
rm -rf * .sh
rm -rf makefile
rm -rf * .properties
rm -rf * .nsi
rm -rfヘルプ
mkdir src
mv * .cpp src
mv * .h src
mv * .ui src
mv yourownnewsmaker.pro src / src.pro
mv * .qrc src
mv画像src
mv page-templates src
mvテンプレートsrc
mv yourownnewsmaker.desktop src
mvはsrcを変更します
mvライセンスsrc
yourownnewsmaker.proに触れます
echo "QMAKEVERSION = $$ [QMAKE_VERSION]" >> yourownnewsmaker.pro
echo "ISQT4 = $$ find(QMAKEVERSION、^ [2-9])" >> yourownnewsmaker.pro
echo "isEmpty(ISQT4){" >> yourownnewsmaker.pro
echo "error(\" Debianはqmake-qt4であるQt4.4以降でqmake includeを使用します\ ");" >> yourownnewsmaker.pro
echo "}" >> yourownnewsmaker.pro
エコー "" >> yourownnewsmaker.pro
echo "TEMPLATE = subdirs" >> yourownnewsmaker.pro
echo "SUBDIRS = src" >> yourownnewsmaker.pro
export DEBFULLNAME = "Valery Konchin"
dh_make -e eeexception@gmail.com --createorig --single -c gpl
mkdir debian
mvルールdebian /ルール
mv control debian / control
mv changelog debian / changelog
sed -i "s / <url:\ / \ / example.com> / http:\ / \ / eeexception.org/g" debian / copyright
sed -i "s / <著者の名前とメールをここに入力> / Valery Konchin <eeexception@gmail.com> / g" debian / copyright
sed -i "s / <別の作成者の場合と同様> // g" debian / copyright
sed -i "s / Copyright(C)YYYY Firstname Lastname / Copyright(C)2010 Valery Konchin / g" debian / copyright
dpkg-buildpackage
rm -rf debian
rm -rf builddir
cd ../
tar -pczf $ BUILDNAME.tar.gz $ BUILDNAME
rm -rf $ BUILDNAME
Windowsパッケージ:
<pre>
#!/ bin / sh
#
#
BUILDDATE = $(日付+%F)
MAJORVERSION = `sed '/ ^ \#/ d' version.properties | grep 'メジャー' | テール-n 1 | sed 's /^.*=//; s / ^ [[:space:]] * //; s / [[:space:]] * $ //' '
マイナーバージョン= `sed '/ ^ \#/ d' version.properties | grep 'マイナー' | テール-n 1 | sed 's /^.*=//; s / ^ [[:space:]] * //; s / [[:space:]] * $ //' '
echo "バージョン:$ MAJORVERSION。$ MINORVERSION"
echo "ビルド日付:$ BUILDDATE"
BASEDIR = "./"
DEPLOYDIR = "deploy / yourownnewsmaker- $ MAJORVERSION。$ MINORVERSION"
PLATFORMDIR = "windows"
BUILDNAME = "yourownnewsmaker- $ MAJORVERSION。$ MINORVERSION"
RELEASEDIR = "$ DEPLOYDIR / $ PLATFORMDIR / $ BUILDNAME"
echo "ビルドディレクトリ:$ RELEASEDIR"
rm -rf $ DEPLOYDIR / $ PLATFORMDIR /
mkdir -p "$ DEPLOYDIR / $ PLATFORMDIR"
svn export ./ $ RELEASEDIR
cd $ RELEASEDIR
sed -i "s /%test-major-version%/ $ MAJORVERSION / g" version.cpp
sed -i "s /%test-minor-version%/ $ MINORVERSION / g" version.cpp
sed -i "s /%test-date%/ $ BUILDDATE / g" version.cpp
#必要なパスを設定
QT_WIN_INSTALL_DIR = / home / exception / Development / qt-4.6.1-win
QT_LIN_INSTALL_DIR = / home / exception / Development / qtsdk-2010.01 / qt
export LD_LIBRARY_PATH = $ QT_LIN_INSTALL_DIR / lib:$ LD_LIBRARY_PATH
export PATH = $ QT_LIN_INSTALL_DIR / bin:$ PATH
export QT_LINUX_BIN_PATH = $ QT_LIN_INSTALL_DIR / bin
export QT_WIN_INCLUDE_PATH = $ QT_WIN_INSTALL_DIR / include
export QT_WIN_LIB_PATH = $ QT_WIN_INSTALL_DIR / lib
qmake -set QT_WIN_INCLUDE_PATH $ QT_WIN_INCLUDE_PATH
qmake -set QT_WIN_LIB_PATH $ QT_WIN_LIB_PATH
#これがqmakeのクロスコンパイルの始まりです
qmake yourownnewsmaker.pro -spec win32-x-g ++ -r
作る
cp -rf build-libs / win / *。dll ./
cp -rf release / *。exe ./
rm -rf images / *。png
rm -rf * .rc
rm -rf * .res
rm -rf build-libs
rm -rf win32-x-g ++
rm -rf linux-g ++-qt4.5
rm -rf * .user
rm -rf * .sh
rm -rf makefile
rm -rf * .properties
rm -rfリリース
rm -rf debug
rm -rf * .desktop
rm -rf Makefile *
rm -rf * .Debug
rm -rf *。リリース
rm -rf制御
rm -rf changelog
rm -rfルール
rm -rfヘルプ
rm -rf * .qrc
rm -rf * .cpp
rm -rf * .h
rm -rf * .ui
rm -rf * .pro
#これらのコマンドを使用して、改行をWindowsに置き換えます
sed -i s / $ / '\ r' / templates / default /*.*
sed -i s / $ / '\ r' / templates / eeex-sony-pdf /*.*
sed -i s / $ / '\ r' / page-templates / *。プロパティ
sed -i s / $ / '\ r' /ライセンス
sed -i s / $ / '\ r' /変更
ワインmakensis.exe win.nsi
rm -rf * .nsi
cd ../
zip -r $ BUILDNAME.zip $ BUILDNAME
パート3.作業結果の確認。 スクリプトを実行した結果、deploy / deb、rpmディレクトリ、ソースコードを含むアーカイブ、バイナリを含むアーカイブ、およびWindows用のインストールパッケージを受け取ります。これはほとんどのユーザーにとって十分だと思います。 この方法で生成されたdebおよびrpmパッケージは、リポジトリに含めるには理想的ではないかもしれませんが、システム上のアプリケーションのインストールと更新は非常にうまくいきます。 理想的には、スクリプトにはアプリケーション自体の機能と同様に正しいインストールの検証がまだないのですが、このためには、現在検索しているGUIテストシステムを使用する必要があります。さらに、サイトエディターのパーサーが一部のシンボルを飲み込む可能性があるため、ダウンロードすることをお勧めします。
http://dl.dropbox.com/u/930431/project-build-scripts.tar.gzhttp://eeexception.org/project-build-scripts.tar.gzhttp://yourownnewsmaker.googlecode.com/files/project-build-scripts.tar.gz