2011-08-07 66 views
2

我有一個簡單的問題與CMake鏈接庫(我不知道CMake非常好)。 我的配置如下:Cmake基本庫鏈接問題

project/src/CMakeLists.txt (with all .cpp and .h files) 
project/support/linux/gmp/include/gmp.h 
project/support/linux/gmp/include/gmpxx.h 
project/support/linux/gmp/include/libgmp.a 
project/support/linux/gmp/include/libgmpxx.a 

如何以包括編譯的過程中,庫GMP? (我在FIND_PACKAGE,INCLUDE_DIRECTORIES,TARGET_LINK_LIBRARIES,ADD_LIBRARY ...命令之間丟失)

非常感謝。

回答

4

CMake不那麼難理解。

第一步

使用find_package定位libary。

find_package(GMP REQUIRED) 

第二步

使用include_directories爲包括libary頭文件。

include_directories(${GOBJECT_INCLUDE_DIR}) 

第三步

使用target_link_libraries到您的二進制對libary鏈接。

add_executable(ExecutableName Main.cpp) 
target_link_libraries(ExecutableName ${GOBJECT_LIBRARIES}) 
+1

謝謝你,但我不明白的是你如何找到變量$ {} GOBJECT_INCLUDE_DIR和名稱$ {} GOBJECT_LIBRARIES:他們在任意名稱?用戶在運行cmake時是否定義了它們?它們是通過find包來定義的嗎? – Vincent

+0

它們由find_package定義。請參閱http://api.kde.org/cmake/modules.html#module_FindGMP – Mythli

+0

再次感謝您。所以我現在的問題是:什麼命令來查找/鏈接一個庫沒有find_package(例如個人庫稱爲exlib與目錄exlib/include和exlib/lib)? – Vincent