在項(xiàng)目的根目錄中創(chuàng)建目錄 cmake/modules/ ,在 cmake/modules/ 下創(chuàng)建文件 Findlibdb_cxx.cmake ,內(nèi)容如下:
01 MESSAGE(STATUS "Using bundled Findlibdb.cmake...")0203 FIND_PATH(04 LIBDB_CXX_INCLUDE_DIR05 db_cxx.h 06 /usr/include/ 07 /usr/local/include/ 08 )09 10 FIND_LIBRARY(11 LIBDB_CXX_LIBRARIES NAMES db_cxx12 PATHS /usr/lib/ /usr/local/lib/13 )文件 Findlibdb_cxx.cmake 的命名要符合規(guī)范: FindlibNAME.cmake ,其中NAME 是函數(shù)庫(kù)的名稱(chēng)。Findlibdb_cxx.cmake 的語(yǔ)法與 CMakeLists.txt 相同。這里使用了三個(gè)命令: MESSAGE , FIND_PATH 和 FIND_LIBRARY 。
命令MESSAGE會(huì)將參數(shù)的內(nèi)容輸出到終端。命令FIND_PATH指明頭文件查找的路徑,原型如下:find_path(<VAR> name1 [path1 path2 ...])該命令在參數(shù)path*指示的目錄中查找文件name1并將查找到的路徑保存在變量VAR中。清單5第3-8行的意思是在/usr/include/和/usr/local/include/中查找文件db_cxx.h ,并將db_cxx.h所在的路徑保存在LIBDB_CXX_INCLUDE_DIR中。命令FIND_LIBRARY同FIND_PATH類(lèi)似,用于查找鏈接庫(kù)并將結(jié)果保存在變量中。清單5第10-13行的意思是在目錄/usr/lib/和/usr/local/lib/中尋找名稱(chēng)為db_cxx的鏈接庫(kù),并將結(jié)果保存在LIBDB_CXX_LIBRARIES。
第二步,在項(xiàng)目的根目錄中創(chuàng)建 CmakeList.txt :
可以查找鏈接庫(kù)的 CMakeList.txt01 PROJECT(main)02 CMAKE_MINIMUM_REQUIRED(VERSION 2.6)03 SET(CMAKE_SOURCE_DIR .)04 SET(CMAKE_MODULE_PATH ${CMAKE_ROOT}/Modules ${CMAKE_SOURCE_DIR}/cmake/modules) 05 AUX_SOURCE_DIRECTORY(. DIR_SRCS)06 ADD_EXECUTABLE(main ${DIR_SRCS})0708 FIND_PACKAGE( libdb_cxx REQUIRED)09 MARK_AS_ADVANCED(10 LIBDB_CXX_INCLUDE_DIR11 LIBDB_CXX_LIBRARIES12 )13 IF (LIBDB_CXX_INCLUDE_DIR AND LIBDB_CXX_LIBRARIES)14 MESSAGE(STATUS "Found libdb libraries")15 INCLUDE_DIRECTORIES(${LIBDB_CXX_INCLUDE_DIR})16 MESSAGE( ${LIBDB_CXX_LIBRARIES} )17 TARGET_LINK_LIBRARIES(main ${LIBDB_CXX_LIBRARIES}18 )19 ENDIF (LIBDB_CXX_INCLUDE_DIR AND LIBDB_CXX_LIBRARIES)在該文件中第4行表示到目錄 ./cmake/modules 中查找 Findlibdb_cxx.cmake ,8-19 行表示查找鏈接庫(kù)和頭文件的過(guò)程。第8行使用命令 FIND_PACKAGE 進(jìn)行查找,這條命令執(zhí)行后 CMake 會(huì)到變量 CMAKE_MODULE_PATH 指示的目錄中查找文件 Findlibdb_cxx.cmake 并執(zhí)行。第13-19行是條件判斷語(yǔ)句,表示如果 LIBDB_CXX_INCLUDE_DIR 和 LIBDB_CXX_LIBRARIES 都已經(jīng)被賦值,則設(shè)置編譯時(shí)到 LIBDB_CXX_INCLUDE_DIR 尋找頭文件并且設(shè)置可執(zhí)行文件 main 需要與鏈接庫(kù) LIBDB_CXX_LIBRARIES 進(jìn)行連接。
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注