1. 程式人生 > >Cmake 自學筆記(linux)(六)

Cmake 自學筆記(linux)(六)

前言:前面的五節是對於cmake的入門內容,接下來繼續學習其他內容

引入:
前面我們在學習時,都是在自己寫標頭檔案和相關的庫,可當我們要使用第三方的庫時,我們就需要知道他的標頭檔案的路徑以及他的名字。然後加在我們的cmakelist中,我們之前寫的:

這裡寫圖片描述

其中 ${PROJECT_SOURCE_DIR}/libhello 以及 target_link_libraries(hello libhello)中的libhello就是我們需要的引數。可是當我們不知道路徑和名字怎麼辦呢?這時候就需要使用cmake裡面的find_package來幫我們找這兩個引數。

具體細節

一. 比如我們需要一個名字為CURL的庫。就需要

find_package(CURL REQUIRED) 
include_directories(${CURL_INCLUDE_DIR}) 
target_link_libraries(curltest ${CURL_LIBRARY})
  2.執行完上面1中的那句話後,系統自動生成幾個引數,只需要我們去呼叫即可。其中之一就是CURL_INCLUDE_DIR,也就是 庫名字_INCLUDE_DIR,這就是路徑。第二個引數就是CURL_LIBRARY,也就是庫名字_LIBRARY,這就是他的名字。


  3.注意要使用${}.

二. 我們也可以用下面的方法:

find_package(CURL)
if(CURL_FOUND)
include_directories(${CURL_INCLUDE_DIR})
target_link_libraries(curltest ${CURL_LIBRARY})
else(CURL_FOUND)
message(FATAL_ERROR "curl not found!")
endif(CURL_FOUND)

這裡面就用到了第三引數 CURL_FOUND ,也就是庫名字_FOUND