CMAKE target_link_libraries怎么理解?

链接外部库

https://blog.csdn.net/liangshui999/article/details/106425753

######################################################### 链接库开始 ###############################################################

# 1,绝对路径方式
#target_link_libraries(MyApp E:/cppTest/test1/lib/libutils.a)

# 2,相对路径,使用相对路径必须先告诉从哪里链接,在这里调用link_directories()是无效的,只有在生成target之前调用才会有效
# 在这里调用link_directories()是无效的,必须在生成可执行文件之前调用link_directories(),也就是在ADD_EXECUTABLE()之前调用
#link_directories(E:/cppTest/test1/lib)
#target_link_libraries(MyApp utils)
#target_link_libraries(MyApp libutils.a)
#message(STATUS "LINK_DIRECTORIES = ${LINK_DIRECTORIES}")

# 3,使用find_library()  
# find_library (<VAR> name1 [path1 path2 ...])
#find_library(LIB_UTILS utils E:/cppTest/test1/lib)
#message(STATUS "LIB_UTILS = ${LIB_UTILS}")
#target_link_libraries(MyApp ${LIB_UTILS})


# 4,使用find_path()和find_library()类似,find_path()可以用来找任何文件
# find_path (<VAR> name1 [path1 path2 ...])
#find_path(LIB_UTILS_PATH libutils.a E:/cppTest/test1/lib)
#message(STATUS "LIB_UTILS_PATH = ${LIB_UTILS_PATH}")
#target_link_libraries(MyApp ${LIB_UTILS_PATH}/libutils.a)

#5,使用find_package(),这种需要先有模块,要么是系统提供的,要么是自己写的,本例中是自己写的Findutils.cmake
#cmake提供的模块 D:\androidSDK\cmake\3.10.2.4988404\share\cmake-3.10\Modules下面
#将自己写的自己写的Findutils.cmake设置到CMAKE_MODULE_PATH中
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${PROJECT_SOURCE_DIR}/cmake)
find_package(utils)
if(utils_FOUND)
    # include_directories()作用是设置头文件的搜索路径
    # 官方的解释:Add the given directories to those the compiler uses to search for include files
    # utils_INCLUDE_DIR的值是在Findutils.cmake里面设置的
    include_directories(${utils_INCLUDE_DIR})

    #utils_LIBRARY的值是在Findutils.cmake里面设置的
    target_link_libraries(MyApp ${utils_LIBRARY})
endif(utils_FOUND)


######################################################### 链接库结束 ###############################################################
  • 11
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值