Cmake,链接一个外部(也可能是第三方,也可能是自己编译的)库
相当于设置VS工程里面的:
然后,为了链接成可执行文件,链接器就会到指定的目录寻找相应的库了。
以下时Demo:
1 cmake_minimum_required(VERSION 2.8) 2 3 #set(CMAKE_C_COMPILER "D:\VS2008Release\VC\bin\amd64") 4 #set(CMAKE_CXX_COMPILER "D:\VS2008Release\VC\bin\amd64") 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()
Reference:
http://stackoverflow.com/questions/8774593/cmake-link-to-external-library