2

私は今、必要なすべてのパスを手動で含めることにより、非常に醜い方法でそれを行っています(gtkバンドルは にありますD:/Tools/gtk+-bundle_2.20.0-20100406_win32):

include_directories(D:/Tools/gtk+-bundle_2.20.0-20100406_win32/include/gtk-2.0 D:/Tools/gtk+-bundle_2.20.0-20100406_win32/include/glib-2.0 D:/Tools/gtk+-bundle_2.20.0-20100406_win32/lib/glib-2.0/include D:/Tools/gtk+-bundle_2.20.0-20100406_win32/include/cairo D:/Tools/gtk+-bundle_2.20.0-20100406_win32/include/pango-1.0 D:/Tools/gtk+-bundle_2.20.0-20100406_win32/lib/gtk-2.0/include D:/Tools/gtk+-bundle_2.20.0-20100406_win32/include/atk-1.0)
link_directories(D:/Tools/gtk+-bundle_2.20.0-20100406_win32/lib)

target_link_libraries(MyProgram gtk-win32-2.0.lib)
4

2 に答える 2

15

2019-10-29 編集: この回答は引き続き機能する可能性がありますが、2011 年の最初の回答から CMake が大幅に進化したことに注意してください。多くの構文およびベスト プラクティスの変更があるため、「最新の CMake」で検索してください。

元の回答:

pkg-config を含むディレクトリ (gtk-bundle/bin ディレクトリにあります) を PATH に追加するだけです。そうすれば、CMake はそれを見つけます。

GTK2 で書かれたサンプル アプリケーションの CMakeLists.txt は次のとおりです。

cmake_minimum_required (VERSION 2.4)
project (gtk-test)

find_package (PkgConfig REQUIRED)
pkg_check_modules (GTK2 REQUIRED gtk+-2.0)

include_directories (${GTK2_INCLUDE_DIRS})
link_directories (${GTK2_LIBRARY_DIRS})
add_executable (gtk-test main.c)
add_definitions (${GTK2_CFLAGS_OTHER})
target_link_libraries (gtk-test ${GTK2_LIBRARIES})

そして、私のテスト アプリの main.c ファイル:

#include <gtk/gtk.h>

int main (int argc, char **argv)
{
    GtkWidget *window;

    gtk_init (&argc, &argv);

    window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
    gtk_window_set_title (GTK_WINDOW (window), "Hello world !");
    g_signal_connect (G_OBJECT (window), "destroy", gtk_main_quit, NULL);

    gtk_widget_show_all (window);
    gtk_main ();

    return 0;
}

CMake 2.4 と CMake 2.8 と MinGW を使用して Win XP でテストしたところ、動作しました。MinGW 外でも動作するはずです。

于 2011-02-24T13:53:02.810 に答える
0

私の CMake の知識はやや時代遅れであり、不快に感じたので Windows から距離を置こうとしていますが、これがFindGTK.cmake目的です。

CMake メーリング リストのこの投稿によると、次のことを行う必要があります。

FIND_PACKAGE(GTK)

IF(GTK_FOUND)
   INCLUDE_DIRECTORIES(${GTK_INCLUDE_DIR})
   ADD_EXECUTABLE(my_gtk_exe my_gtk_exe.cxx)
   TARGET_LINK_LIBRARIES(my_gtk_exe ${GTK_LIBRARIES})
ENDIF(GTK_FOUND)

更新:FindGTK.cmakeは実際には古すぎて GTK1 を参照している可能性がありますFindGTK2.cmake。代わりに試してみることをお勧めします。お使いの CMake バージョンに含まれていない場合は、こちらから入手してみてください。

Update2 : 確かに、上記の FindGTK2 リンクは役に立ちません。そのロジックはすべて次のもので囲まれています。

if(UNIX)
  ...
endif(UNIX)

Update3 :メーリング リストからの引用:

... このような Windows への広がりの代表的な例の 1 つは、libGTK+ とその仲間です (別の 1 人がこのスレッドで言及したように)。一部の PLplot ドライバーは、ライブラリの GTK+ スタックの一部に依存しています。私たちの開発者の 1 人 (Werner Smekal) の言葉を引用します。最近 PLplot の開発者リストに、これらのドライバーを Windows で動作させるのがいかに簡単であるかについて報告しました。

Windows の Cairo ドライバー、または Windows の pplot に gtk+ を使用

1) Windows 用のサードパーティの依存関係を含む GTK+ スタックのオールインワン バンドルをダウンロードします: http://ftp.gnome.org/pub/gnome/binaries/win32/gtk+/2.12/gtk+-bundle-2.12。 9.zipはhttp://www.gtk.org/download-windows.html から入手できます。

2) パッケージをディレクトリに展開します (例: C:\Development\gtk)。

3) CMake が pkf-config を見つけられるように環境変数を設定します。

    set PKG_CONFIG_PATH=C:\Development\gtk\lib\pkgconfig
    set PATH=C:\Development\gtk\bin;%PATH%

4) CMake は、pkg-config と、pdfcairo、pscairo、pngcairo、および svgcairo デバイスをビルドするために必要なすべてのライブラリを見つけます。X-Headers が存在しないため、xcairo はビルドされません。

したがって、次のものが欠けているようです:

set PKG_CONFIG_PATH=C:\path\to\gtk\lib\pkgconfig
set PATH=C:\path\to\gtk\bin;%PATH%
于 2010-04-28T14:12:26.433 に答える