添加CMake本身支持的第三方库
比如说需要添加第三方curl库的支持
方案一
# 告诉编译器头文件的位置,这样可以调用头文件中的函数
include_directories(/usr/local/include/curl)
add_executable(demo xxx)
# 告诉链接器共享库文件的位置,这样链接器就相当于知道了curl的实现
target_link_libraries(demo /usr/local/lib/libcurl.so)
方案二
find_package(CURL REQUIRED)
# 给编译器
include_directories(${CURL_INCLUDE_DIR})
add_executable(demo xxx)
# 给链接器
target_link_libraries(demo ${CURL_LIBRARY})
方案二能使用find_package的具体原因在于/usr/share/cmake/Modules下已经定义了很多的cmake文件,
例如
FindQt4.cmake
FindGIF.cmake
FindCURL.cmake等
我们通过命令查看
$ cmake --help-module FindCURL
FindCURL
--------
Find curl
Find the native CURL headers and libraries.
::
CURL_INCLUDE_DIRS - where to find curl/curl.h, etc.
CURL_LIBRARIES - List of libraries when using curl.
CURL_FOUND - True if curl found.
CURL_VERSION_STRING - the version of curl found (since CMake 2.8.8)
添加其它的第三方库
# cmake/FindLoopEvent.cmake
FIND_PATH(LOOP_EVENT_INCLUDE_DIR event_loop.h /usr/local/include/EventLoop/)
FIND_LIBRARY(LOOP_EVENT_LIBRARY libeventloop.so /usr/local/lib/)
if(LOOP_EVENT_INCLUDE_DIR AND LOOP_EVENT_LIBRARY)
set(EVENTLOOP_FOUND TRUE)
endif(LOOP_EVENT_INCLUDE_DIR AND LOOP_EVENT_LIBRARY)
# CMakeList.txt
# 定义自己的cmake所在的路径
set(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake)
find_package(LoopEvent REQUIRED)
include_directories(${LOOP_EVENT_INCLUDE_DIR})
add_executable(cxk_demo xxx)
target_link_libraries(cxk_demo ${LOOP_EVENT_LIBRARY})