Qtプロジェクトから成人向けのインストールパッケージを収集します

試行錯誤を繰り返して、私は別の自転車を発明しました。これは、DebianおよびRpmベースのシステム用のQtプロジェクト、Ubuntu / DebianからのWindowsからパッケージをビルドすることについて説明します。 原則として、この方法は非常に単純であるため、小さな変更を加えるとrpbベースのディストリビューションにも適しており、Windowsシステムではcygwinのインストールが必要になると思います。パッケージは簡単なタスクです。この資料に興味がある人は次のとおりです。 以下に説明するすべてのアクションは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つの文字列値を作成します。 このような簡単な手順の結果として、任意のディレクトリで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.gz

http://eeexception.org/project-build-scripts.tar.gz

http://yourownnewsmaker.googlecode.com/files/project-build-scripts.tar.gz



All Articles