Cmake,链接一个外部(也可能是第三方,也可能是自己编译的)库

相当于设置VS工程里面的:

然后,为了链接成可执行文件,链接器就会到指定的目录寻找相应的库了。

以下时Demo:

 1 cmake_minimum_required(VERSION 2.8)
 2 
 3 #set(CMAKE_C_COMPILER "D:VS2008ReleaseVCinamd64")
 4 #set(CMAKE_CXX_COMPILER "D:VS2008ReleaseVCinamd64")
 5 
 6 PROJECT(CONVERT) 
 7 
 8 add_definitions(-D_CONSOLE)
 9 add_definitions(-D_LIB)
10 
11 add_definitions(-D_VISUALC_)
12 add_definitions(-DNeedFunctionPrototypes)
13 
14 include_directories(../)
15 
16 
17 #shang LINK_DIRECTORIES(../../build/lib)
18 LINK_DIRECTORIES(${CMAKE_BINARY_DIR}/lib)
19 
20 
21 
22 set(SRC ${PROJECT_SOURCE_DIR}/convert.c)
23 
24 
25 add_executable(convert ${SRC})
26 
27 set(IMAGEMAGICK_LIB CORE_wand CORE_magick CORE_wmf CORE_pixman CORE_ffi CORE_croco CORE_cairo CORE_webp CORE_ttf CORE_tiff CORE_png CORE_pango CORE_lqr  CORE_libxml CORE_librsvg CORE_lcms CORE_jp2 CORE_jbig CORE_glib CORE_filters CORE_coders CORE_jpeg CORE_bzlib CORE_zLib)
28 target_link_libraries(convert ${IMAGEMAGICK_LIB} urlmon.lib)
29 
30 set(CompilerFlags
31         CMAKE_CXX_FLAGS
32         CMAKE_CXX_FLAGS_DEBUG
33         CMAKE_CXX_FLAGS_RELEASE
34         CMAKE_C_FLAGS
35         CMAKE_C_FLAGS_DEBUG
36         CMAKE_C_FLAGS_RELEASE
37         )
38 foreach(CompilerFlag ${CompilerFlags})
39   string(REPLACE "/MD" "/MT" ${CompilerFlag} "${${CompilerFlag}}")
40   string(REPLACE "/Ob0" "" ${CompilerFlag} "${${CompilerFlag}}")
41   string(REPLACE "/TC" "" ${CompilerFlag} "${${CompilerFlag}}")
42 endforeach()
View Code

Reference:

http://stackoverflow.com/questions/8774593/cmake-link-to-external-library

原文地址:https://www.cnblogs.com/foohack/p/3523685.html