Cmake链接第三方库的三种方法

本文介绍链接第三方库的3种方法(以OpenBLAS举例。使用的工程名称为Test_lib(可执行文件名字),主程序为library.c。代码中的各路径请自行替代):

(1)通过OpenBLASConfig.cmake文件(其中的内容是lib和头文件位置),然后使用find_package查找即可。具体代码如下:

复制代码
  1. add_executable(Test_lib library.c)

  2. set(OpenBLAS_DIR "/path to .camke文件")

  3. find_package(OpenBLAS REQUIRED)

  4. include_directories(${OpenBLAS_INCLUDE_DIRS})

  5. target_link_libraries(Test_lib ${OpenBLAS_LIBRARIES})

.cmake一般会由第三方库自动生成,去安装路径寻找。里面包含的是库文件和头文件的路径设置。

(2)通过find_library直接设置设置库文件和头文件的地址,具体代码如下:

复制代码
  1. include_directories(/path to OpenBLAS/include/)

  2. find_library(OPENBLAS NAMES OpenBLAS PATHS /path to OpenBLAS/lib/ NO_DEFAULT_PATH)

  3. add_executable(Test_lib library.c)

  4. target_link_libraries(Test_lib ${OPENBLAS})

(3)通过link_directories直接设置库文件和头文件的地址,具体代码如下:

复制代码
  1. include_directories(/path to OpenBLAS/include/) # 头文件的路径

  2. link_directories(/path to OpenBLAS/lib/) # .a文件的路径

  3. add_executable(Test_lib library.c)

  4. target_link_libraries(Test_lib libopenblas.a)

注意,在第3种方法下,add_executable语句一定要在link_directories之后,否则会找不到库文件。(不知道是不是新版本的cmake(使用的版本是3.15.3)才会有这个问题。网上的例子很多都是放在link_directories之前的。)

cmake官方认为应该尽量避免使用这个方法,尽量使用find_package() 和 find_library():link_directories --- CMake 3.13.5 Documentation

相关推荐
Digitally3 天前
如何将荣耀手机的照片传输到 Mac
macos·智能手机
yzpyzp3 天前
Android 的16 KB内存页设备需要硬件支持吗,还是只需要手机升级到Android15系统就可以
android·智能手机
速易达网络3 天前
旧手机部署轻量级服务器
运维·服务器·智能手机
火山引擎开发者社区4 天前
火山引擎 MCP 安全架构与实践
microsoft·安全架构·火山引擎
Alla T4 天前
【通识】手机和芯片相关
智能手机
Digitally4 天前
4种灵活的方法从POCO手机中删除联系人
智能手机
Vermouth_005 天前
windows电脑给iOS手机安装ipa包的方法
windows·ios·智能手机·iphone
大咖分享课5 天前
探秘边缘安全架构设计要点解析
人工智能·边缘计算·安全架构
开开心心就好6 天前
Excel数据合并工具:零门槛快速整理
运维·服务器·前端·智能手机·pdf·bash·excel
ONETHING_CLOUD_26 天前
如何给手机充电才不伤电池?
科技·智能手机·电脑·数码