CMakeLists.txt语法(四)

一.简介

使用外部动态库或者静态库,生成可执行文件。

二.外部库

1.外部库头文件

testlib.h存放目录:/usr/local/testLIB

c 复制代码
#ifndef TEST_LIB_H
#define TEST_LIB_H

#include<stdio.h>
void printFunc();

#endif

2.外部库源文件

testlib.c

c 复制代码
#include "testlib.h"

void printFunc()
{
	printf("this is printFunc test\n");
}

3.外部库文件

生成库文件的方法,请参考本专栏文章《CMakeLists.txt语法(三)》。

动态库文件testlib.so和静态库文件testlib.a存放目录:/usr/local/testLIB/lib

三.构建工程

1.工程目录下的CMakeLists.txt

c 复制代码
PROJECT(uselib)
ADD_SUBDIRECTORY(src bin)

2.子目录下的文件

(1)CMakeLists.txt

  • 调用动态库
c 复制代码
INCLUDE_DIRECTORIES(/usr/local/testLIB)
LINK_DIRECTORIES(/usr/local/testLIB/lib)
ADD_EXECUTABLE(uselib main.c)
TARGET_LINK_LIBRARIES(uselib libtest.so)
  • 调用静态库
c 复制代码
INCLUDE_DIRECTORIES(/usr/local/testLIB)
LINK_DIRECTORIES(/usr/local/testLIB/lib)
ADD_EXECUTABLE(uselib main.c)
TARGET_LINK_LIBRARIES(uselib libtest.a)

(2)main.c

c 复制代码
#include "testlib.h"

void main()
{
	printFunc();
	printf("this is use library demo\n");
}

3.外部编译

进入build目录后,执行

c 复制代码
cmake ..
make

4.运行编译后的可执行文件

5.查看可执行文件依赖的动态库

c 复制代码
ldd ./uselib

四.语法

1.INCLUDE_DIRECTORIES

  • 语法:INCLUDE_DIRECTORIES( dir1 dir2 ...)
  • 功能:向工程添加多个头文件搜索路径,路径之间用空格分开
  • 语法:LINK_DIRECTORIES(directory1 directory2 ...)
  • 功能:添加非标准的共享库搜索路径
  • 语法:TARGET_LINK_LIBRARIES(target library1 library2...)
  • 功能:为target添加需要链接的共享库
相关推荐
DeepVis Research4 天前
【HPC/Integration】2026年度异构防御集群初始化与分布式协同基准索引 (Phase 1)
网络安全·云计算·数据集·嵌入式开发·系统集成
泛联新安13 天前
嵌入式开发的智能新纪元:万象灵码引领专用大模型的精准突破
嵌入式开发·嵌入式大模型
MounRiver_Studio14 天前
RISC-V IDE MRS2使用笔记(十三):添加自定义工程模板
ide·mcu·risc-v·嵌入式开发
MounRiver_Studio14 天前
RISC-V IDE MRS2使用笔记(十二):快捷配置页面
ide·mcu·risc-v·嵌入式开发
MounRiver_Studio14 天前
RISC-V IDE MRS2使用笔记(十一):工程导出为CMake项目
ide·mcu·risc-v·嵌入式开发
龙智DevSecOps解决方案14 天前
汽车网络安全开发语言选型指南:C/C++/Rust/Java等主流语言对比+Perforce QAC/Klocwork工具支持
开发语言·autosar·嵌入式开发·perforce·代码安全·汽车网络安全
Tronlong创龙15 天前
国产ARM + FPGA SoC突围,由“安路”正式吹起号角
开发板·嵌入式开发·硬件开发·工业控制
apocelipes18 天前
从源码角度解析C++20新特性如何简化线程超时取消
c++·性能优化·golang·并发·c++20·linux编程
MounRiver_Studio21 天前
RISC-V IDE MRS2使用笔记(九):静态代码分析
ide·mcu·risc-v·嵌入式开发
迅为电子22 天前
迅为iTOP-Hi3403开发板linux驱动教程全面上线,开启嵌入式Linux开发新篇章!
嵌入式开发·itop-hi3403开发板·linux驱动教程·迅为教程