CMake Practice 学习笔记四---使用动静态库

news2024/10/6 4:04:19

任务:

编写一个程序使用我们上一届构建的共享库

1、准备工作

在/backup/cmake目录建立t4目录

mkdir t4

在t4目录中建立src目录,并编写源文件main.c

cd t4 
mkdir src && cd src
touch main.c

main.c的内容如下:

#include <hello.h>
int main()
{
    HelloFunc();
    return 0;
}

编写工程主文件CMakeLists.txt如下

PROJECT(NEWHELLO)

# 头文件搜索路径
INCLUDE_DIRECTORIES(/usr/include/hello)


ADD_SUBDIRECTORY(src)

编写src/CMakeLists.txt如下

# 生成target二进制可执行文件
ADD_EXECUTABLE(main mian.c)

# 为target链接共享库
# 可以link动态库
TARGET_LINK_LIBRARIES(main hello) # hello 也可以写成libhello.so
# 也可以Link静态库
TARGET_LINK_LIBRARIES(main libhello.a)

2、构建

新建buil目录并进入进行构建

cmake ..
make

这样我们就得到了一个连接到libhello的可执行程序main,位于build/src,目录下,运行main的结果是输出:

Hello World

检查下main的链接情况:

如果链接动态库:

可以清楚的看到main确实链接了共享库libhello,而且是链接的动态库libhello.so.1

如果链接的是静态库:

main链接到libhello.a(这里我也不大懂)

问:这里在工程主文件CMakeLists.txt中指定了头文件的搜索路径,但是没有在src/CMakeLists.txt指定共享库的路径,而是直接进行链接,这样说不过去呀?

前面我们将头文件和共享库安装到系统目录/usr/lib和/usr/include/hello中了。会不会/usr/lib默认是库的存放位置。

还真是哦,不信你看,所以上一步安装的位置要对哦: /lib、/usr/lib、/usr/local/lib区别_XX風的博客-CSDN博客_/usr/lib

问:如果我没有把共享库安装/usr/lib,比如说我安装到了/temp/lib那我需要指定共享库路径吗?

是的哦,在工程主文件CMakeLists.txt中添加:

LINK_DIRECTORIES(/temp/lib)

 参考:

从从C++学习(二六六)LINK_DIRECTORIES_hankern的博客-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/553627.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

博客系统后端设计(七) - 实现显示用户信息与注销功能

文章目录 1. 显示用户信息1.1 约定前后端交互接口1.2 修改列表页的前段代码1.3 实现详情页的后端代码1.4 实现详情页的前端代码 2. 注销2.1 确定前后端交互接口2.2 实现后端代码2.3 修改前端代码 1. 显示用户信息 此处的用户名是写死的&#xff0c;我们希望的是此处是能够动态生…

nodejs+vue婚庆服务网站的设计与实现

为了适应现代人类强烈的时间观念&#xff0c;对于用户&#xff0c;因此&#xff0c;这就需要一个互联网平台实现在线婚庆服务网站&#xff0c;正是这么一个方便的平台。本网站中&#xff0c;用户与活动报名可以以最方便的形式&#xff0c;在最短的时间内获悉报名信息&#xff0…

Nginx Web页面缓存 Rsync远程同步

Nginx Web页面缓存 在http块中加配置&#xff1a; proxy_cache_path /data/nginx/cache levels1:2 keys_zonemy_cache:10m max_size10g inactive60m use_temp_pathoff ##################################### path&#xff1a;强制参数&#xff0c;指定缓存文件的存放路径 …

51单片机蓝牙APP自助商品售卖机12864投币找零

实践制作DIY- GC0132-蓝牙APP自助商品售卖机 一、功能说明&#xff1a; 基于51单片机设计-蓝牙APP自助商品售卖机 二、功能介绍&#xff1a; 硬件组成&#xff1a;STC89C52单片机最小系统LCD12864显示蜂鸣器ULN2003步进电机模拟出商品多个按键&#xff08;找零、确认、投…

掌握RDD算子

文章目录 一、准备本地系统文件二、把文件上传到HDFS三、启动HDFS服务四、启动Spark服务五、启动Spark Shell六、映射算子案例任务1、将rdd1每个元素翻倍得到rdd2任务2、将rdd1每个元素平方得到rdd2任务3、利用映射算子打印菱形IDEA里创建项目实现 七、过滤算子案例任务1、过滤…

编写 ROS 服务节点 Service 和 Client(python/C++)(六)

1.编写 Service 节点&#xff08;C&#xff09; 进入目录 cd ~/catkin_ws/src/beginner_tutorials/src然后vim server.cpp 复制代码粘贴&#xff0c;shiftinsert 粘贴 &#xff0c;然后按Esc 键&#xff0c;然后输入:wq 就可以保存退出了 #include "ros/ros.h" …

OSI分层

1 应用层 最上层的&#xff0c;也是我们能直接接触到的就是应用层&#xff08;Application Layer&#xff09;&#xff0c;我们电脑或手机使用的应用软件都是在应用层实现。那么&#xff0c;当两个不同设备的应用需要通信的时候&#xff0c;应用就把应用数据传给下一层&#x…

小航助学信息学奥赛C++ GoC模拟试卷(含题库答题软件账号)

信息学奥赛C GoC系统请点击 电子学会-全国青少年编程等级考试真题Scratch一级&#xff08;2019年3月&#xff09;在线答题_程序猿下山的博客-CSDN博客_小航答题助手 单选题10.0分 删除编辑 答案:C 第1题goc命令可以通过多命令拼接方式&#xff0c;优化代码布局&#xff0c;…

DHTMLX Suite JS PRO 8.1.1 Crack

适用于现代 Web 应用程序的强大 JavaScript 小部件库 - DHTMLX 套件 用于创建现代用户界面的轻量级、快速且通用的 JavaScript/HTML5 UI 小部件库。 DHTMLX Suite 有助于推进 Web 开发和构建具有丰富功能的数据密集型应用程序。 DHTMLX Suite 是一个 UI 小部件库&#xff0c;用…

用于脑MRI分割的注意对称自动编码器

文章目录 Attentive Symmetric Autoencoder for Brain MRI Segmentation摘要本文方法Attentive Reconstruction Loss位置编码SPE下游任务网络结构 实验结果 Attentive Symmetric Autoencoder for Brain MRI Segmentation 摘要 基于图像块重建的自监督学习方法在训练自动编码器…

深度学习基础入门篇[9.1]:卷积之标准卷积:卷积核/特征图/卷积计算、填充、感受视野、多通道输入输出、卷积优势和应用案例讲解

【深度学习入门到进阶】必看系列&#xff0c;含激活函数、优化策略、损失函数、模型调优、归一化算法、卷积模型、序列模型、预训练模型、对抗神经网络等 专栏详细介绍&#xff1a;【深度学习入门到进阶】必看系列&#xff0c;含激活函数、优化策略、损失函数、模型调优、归一化…

6个AI绘画网站,可生成海报

目录 1、Midjourney 2、Stable Diffusion Omline 3、Microsoft Designer 4、Craiyon 5、NightCafe S 6、Wombo 1、Midjourney 特点&#xff1a;业内标杆&#xff0c;效果最强大 Midjourney是基于diffusion的AI图画艺术生成器。生成图片不局限于二次元人物&#xff0c;能够…

产品经理在空窗期该做什么?

最近一段时间&#xff0c;就业形势越来越严峻&#xff0c;尤其是互联网行业&#xff0c;尤其是产品经理这个岗位竞争更是激烈&#xff0c;很多产品经理都难免有了数个月的空窗期&#xff0c;而空窗期的存在又使得产品经理竞争力下降&#xff0c;形成了负循环。而唯一能打破这种…

FPGA纯verilog代码实现H265视频压缩 支持4K30帧分辨率 提供工程源码和技术支持

这里写目录标题 1、前言2、我这里已有的视频图像编解码方案3、H265--视频压缩理论4、H265--视频压缩--性能表现5、H265--视频压缩--设计方案6、H265--视频压缩--时序7、Vivado工程详解8、移植上板应用9、Vivado功能仿真10、福利&#xff1a;工程代码的获取 1、前言 H265视频压…

十大排序算法之冒泡排序、快速排序的介绍

个人主页&#xff1a;平行线也会相交 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 平行线也会相交 原创 收录于专栏【数据结构初阶&#xff08;C实现&#xff09;】 目录 冒泡排序冒泡排序代码冒泡排序优化 快速排序快速排序代码 冒泡排序 说起来冒泡排…

推荐8款在win11上还能用的“古董级”软件

前几天花重金1.3个w买了一台新电脑华为一体机MateStation X 2023&#xff0c;用了近10年的华硕迷你电脑终于要下岗了。这么多年来一直在用win7操作系统&#xff0c;现在直接迭代到win11了&#xff0c;以前几个用得称手的工具软件不舍得扔&#xff0c;拷到新电脑上居然还能用&am…

前端之CSS常用选择器分享~

目录 1. 标签选择器 2. 类选择器 3. id选择器 4. 后代选择器 5. 子代选择器 6. 并集选择器 7. 兄弟选择器 1. 标签选择器 ● 基本格式 : 标签名{属性1: ; 属性2: ; 属性3: ;....} ● 示例代码 <body><style>div {width: 100px;height: 100px;background-co…

【微报告】行泊一体低、中、高算力平台,谁能率先突围?

行泊一体是大势所趋&#xff0c;且正分层发展&#xff0c;这是业内已有的共识。但对身处其中的竞争者&#xff0c;更重要且更难的显然为踏准市场节奏&#xff0c;从而用既有的资源取舍布局&#xff0c;最终吃下窗口期爆发红利&#xff0c;在细分赛道中脱颖而出。 高工智能汽车…

[Hadoop]数据仓库基础与Apache Hive入门

目录 大数据导论与Linux基础 Apache Hadoop、HDFS 大数据导论与Linux基础 数据仓库基本概念 数据仓库概念 数据仓库主要特征 数据仓库主流开发语言--SQL Apache Hive入门 Apache Hive概述 场景设计&#xff1a;如何模拟实现Hive功能 Apache Hive架构、组件 Apache H…

Python实现ACO蚁群优化算法优化卷积神经网络分类模型(CNN分类算法)项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档视频讲解&#xff09;&#xff0c;如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 蚁群优化算法(Ant Colony Optimization, ACO)是一种源于大自然生物世界的新的仿生进化算法&#xff0c…