5

cygwin で gtk+ アプリケーションをコンパイルできましたが、残念ながらこのアプローチでは、アプリケーションを起動するには x ウィンドウを実行する必要があります。

gtk+ アプリケーションをコンパイルして、Windows でネイティブに実行するにはどうすればよいですか。

-mno-cygwinフラグの使用に関するさまざまな投稿をオンラインで見たことがgccありますが、それは非推奨になっているようですか?

また、stackoverflow でこれらの投稿を見たことがありますが、X 用にコンパイルしようとしているのか、Windows 用にネイティブにコンパイルしようとしているのかは明確ではありません。

4

1 に答える 1

7

アプリケーションは、Cygwin ではなく MinGW を使用してコンパイルする必要があります。

私が従ったステップの完全なリスト:

1) MinGW をダウンロード

2) MinGW をスペースのないフォルダー (c:\MinGW など) にインストールします。

3) gtk+ をダウンロードします。私のマシンは 64 ビットですが、64 ビット ダウンロード ページに互換性に関する警告が表示されたため、gtk+ の 32 ビット ダウンロードを選択しました。GTK+ Win32 のダウンロードはこちら. 私はオールインワンバージョンに行きました。

4) gtk+ をスペースのないフォルダーに抽出します (例: c:\gtk)。

5) アプリケーションがまだない場合は、gtk+ hello worldソース コードを使用できます。これをフォルダーに保存します。例: c:\myapp\

6) Windows コマンド プロンプトを開き、ステップ 5 のフォルダーに移動します。

cd c:\myapp

7) コマンド ウィンドウで、MinGW フォルダーを Windows PATH に追加します。

c:\myapp> set PATH=c:\gtk\bin;%PATH%

8) コマンド ウィンドウで、gtk+ フォルダーを Windows PATH に追加します。

c:\myapp> set PATH=c:\gtk\bin;%PATH%

9) アプリケーションをコンパイルするスクリプトを作成します。

C:\myapp> C:\MinGW\msys\1.0\bin\bash.exe -c "echo gcc -Wall -g helloworld.c -o helloworld `pkg-config --cflags gtk+-2.0` `pkg-config --libs gtk+-2.0` > compile.bat"

bash.exe へのフル パスを指定する必要があることに注意してください。何らかの理由c:\MinGW\msys\1.0\binで、PATHに追加して使用するだけでbash.exeはうまくいきませんでした。

10) compile.bat でアプリケーションをコンパイルします。

c:\myapp> compile.bat

12) アプリケーションを実行します。

c:\myapp> helloworld.exe

スクリーンショット


編集

ステップ 9 ではgcc、正しいインクルードとライブラリ オプション設定で gtk+ をコンパイルするコマンドを作成しています。

これはcompile.bat私のために生成された内容です:

gcc -Wall -g helloworld.c -o helloworld -mms-bitfields -Ic:/DEV/gtk224/include/gtk-2.0 -Ic:/DEV/gtk224/lib/gtk-2.0/include -Ic:/DEV/gtk224/include/atk-1.0 -Ic:/DEV/gtk224/include/cairo -Ic:/DEV/gtk224/include/gdk-pixbuf-2.0 -Ic:/DEV/gtk224/include/pango-1.0 -Ic:/DEV/gtk224/include/glib-2.0 -Ic:/DEV/gtk224/lib/glib-2.0/include -Ic:/DEV/gtk224/include -Ic:/DEV/gtk224/include/freetype2 -Ic:/DEV/gtk224/include/libpng14 -Lc:/DEV/gtk224/lib -lgtk-win32-2.0 -lgdk-win32-2.0 -latk-1.0 -lgio-2.0 -lpangowin32-1.0 -lgdi32 -lpangocairo-1.0 -lgdk_pixbuf-2.0 -lpango-1.0 -lcairo -lgobject-2.0 -lgmodule-2.0 -lgthread-2.0 -lglib-2.0 -lintl

そのうち、によって作成された include オプションpkg-config --cflags gtk+-2.0:

-mms-bitfields -Ic:/DEV/gtk224/include/gtk-2.0 -Ic:/DEV/gtk224/lib/gtk-2.0/include 
   -Ic:/DEV/gtk224/include/atk-1.0 -Ic:/DEV/gtk224/include/cairo 
   -Ic:/DEV/gtk224/include/gdk-pixbuf-2.0 -Ic:/DEV/gtk224/include/pango-1.0 
   -Ic:/DEV/gtk224/include/glib-2.0 -Ic:/DEV/gtk224/lib/glib-2.0/include 
   -Ic:/DEV/gtk224/include -Ic:/DEV/gtk224/include/freetype2 
   -Ic:/DEV/gtk224/include/libpng14

(stackoverflow での読みやすさを向上させるために、上記で改行を入れたことに注意してください)

pkg-config --cflags gtk+-2.0gtk+ インクルード ファイル (c:/DEV/gtk224/include/) のフル パスが含まれていることに注意してください。

そして、によって生成されたライブラリ オプションpkg-config --libs gtk+-2.0:

-Lc:/DEV/gtk224/lib -lgtk-win32-2.0 -lgdk-win32-2.0 -latk-1.0 -lgio-2.0 
   -lpangowin32-1.0 -lgdi32 -lpangocairo-1.0 -lgdk_pixbuf-2.0 -lpango-1.0 
   -lcairo -lgobject-2.0 -lgmodule-2.0 -lgthread-2.0 -lglib-2.0 -lintl

(stackoverflow での読みやすさを向上させるために、上記で改行を入れたことに注意してください)

pkg-config --libs gtk+-2.0gtk ライブラリ フォルダーのフル パス (c:/DEV/gtk224/lib) が含まれていることに注意してください。

詳細についてpkg-configは、GTK+ のドキュメントを参照してください。

于 2013-09-14T08:36:39.883 に答える