前言:前面的五节是对于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})
说明:
1.find_package(CURL REQUIRED) 中第一个参数为需要的库的名字,第二个问参数,关于参数可详见http://blog.csdn.net/bytxl/article/details/50637277
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