鏈接順序很重要。我觀察到,當我編譯我的程序有:如何更改cmake文件中的Lib的順序?
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}")
現在,當我做了cmake
接着是make
我得到同樣的鏈接錯誤,上面第一行給了我,讓我知道我的連接問題嚴格相關的訂單。那麼如何在cmake文件中使用pkg-config時更改鏈接順序?我試過對我的cmake文件的部分進行重新排序,但我似乎沒有找到正確的順序。
你甚至注意到了我自己的答案,並仍然提供了改進。這是非常好的信息,爲我澄清了一些事情。出於某種原因,cmake說'未知的CMake命令「pkg_check_modules」',但我至少改進了我用兩個獨立的exec_program調用所做的改進:一個用於--cflags,另一個用於--libs。然後,我在一組(CMAKE_CXX_FLAGS ...)命令中使用GTK_CFLAGS,並在target_link_libraries(...)中使用GTK_LIBS。 – Octopus
我在答案中加入了「include」語句。這應該可以解決找到的錯誤。但是,我已經發布了另一個問題的參考,你應該看看那裏。 – user2618142