リンクの順序が重要です。プログラムをコンパイルすると、次のことがわかりました。
gcc `pkg-config --cflags --libs gtk+-2.0` program.cpp -o program
これにより、多くのリンカ エラーが生成されます。「`_gtk_init_abi_check' への未定義の参照」などです。これは、ライブラリの前に入力ファイルを指定することで解決できます。
gcc program.cpp `pkg-config --cflags --libs gtk+-2.0` -o program
私の質問:
Cmake ファイルを使用しているときに、この性質の問題を修正するにはどうすればよいですか? 現在使用している簡単な cmake ファイルの内容を次に示します。
cmake_minimum_required(VERSION 2.6)
project(program)
add_executable(program
program.cpp
)
EXEC_PROGRAM(pkg-config ARGS --cflags --libs gtk+-2.0
OUTPUT_VARIABLE GTK2_PKG_FLAGS)
SET(GTK2_PKG_FLAGS CACHE STRING "GTK2 Flags" "${GTK2_PKG_FLAGS}")
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${GTK2_PKG_FLAGS}")
a のcmake
後に aを実行するmake
と、上記の最初の行と同じリンカ エラーが発生するので、リンカの問題が順序に厳密に関連していることがわかります。では、cmake ファイルで pkg-config を使用するときにリンクの順序を変更するにはどうすればよいですか? cmake ファイルの一部を並べ替えてみましたが、正しい順序が見つからないようです。