链接顺序很重要。我观察到,当我编译我的程序时:
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}")
现在,当我执行 acmake
后跟 a时,make
我得到与上面第一行相同的链接器错误,所以我知道我的链接器问题与顺序严格相关。那么在 cmake 文件中使用 pkg-config 时如何更改链接顺序?我尝试重新排序我的 cmake 文件的某些部分,但我似乎没有找到正确的顺序。