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添加需要链接的共享库
相关推荐
weixin_399733623 天前
C语言教程
c语言·嵌入式开发·编程教程·谭浩强·c程序设计
Tronlong创龙5 天前
RK3576 单板机嵌入式 Qt 界面与多屏异显开发手册(一)
开发板·嵌入式开发·硬件开发·工业控制
武汉唯众智创5 天前
唯众无人驾驶智能小车实训平台:从ROS开发到SLAM建图,一站式搞定无人驾驶实训
嵌入式开发·ai 实训平台·无人驾驶智能小车·高校实训装备·智能小车实训
Tronlong创龙6 天前
RK3576 单板机嵌入式 Qt 界面与多屏异显开发手册(二)
开发板·嵌入式开发·硬件开发·工业控制
hipolymers7 天前
C语言是什么
c语言·嵌入式开发·编程范式·高效性·系统级编程
合众恒跃7 天前
边缘计算终端,前路何方?小型化,或是破局之选。
边缘计算·开发板·嵌入式开发·工业物联网·瑞芯微
玄奕子16 天前
VS Code 上传 GitHub 全流程(Windows 环境):HTTP 与 SSH 两种方案(含常见报错排查)
git·http·ssh·github·嵌入式开发
菠萝地亚狂想曲18 天前
FreeRTOS heap4
c语言·stm32·嵌入式开发
禅口魔心22 天前
KelpBar 智慧屏项目学习 —— 简单的修改
lvgl·嵌入式开发·kelpbar
Qt程序员22 天前
Linux 内核 SPI 驱动
linux·linux内核·嵌入式开发·spi