Cmake编译源代码生成库文件以及使用

news2024/12/28 5:00:13

在项目实战中,通过模块化设计能够使整个工程更加简洁明了。简单的示例如下:

1、项目结构

project_folder/
    ├── CMakeLists.txt
    ├── src/
    │   ├── my_library.cpp
    │   └── my_library.h
    └── app/
        └── main.cpp

2、CMakeList文件

# CMake 最低版本要求
cmake_minimum_required(VERSION 3.5)

# 项目名称
project(MyProject)

# 添加库文件
add_library(my_library 
    src/my_library.cpp
)

# 添加头文件路径
target_include_directories(my_library PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/src)

# 添加可执行文件
add_executable(my_app 
    app/main.cpp
)

# 链接库文件到可执行文件
target_link_libraries(my_app PRIVATE my_library)

3、实战案例

还是用之前文章的demo来举例

链接之前定义的addition库

 最后在main函数中调用

4、总结

通过多文件夹形式以及动态链接库的方式,能够有效的规范C++工程建设。

add_library(${PROJECT_NAME}

SHARED

process.cpp

)

 

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

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

相关文章

[机器学习系列]深入探索回归决策树:从参数选择到模型可视化

目录 一、回归决策树的参数 二、准备数据 三、构建回归决策树 (一)拟合模型 (二)预测数据 (三)查看特征重要性 (四)查看模型拟合效果 (五) 可视化回归决策树真实值和预测值 (六)可视化决策树并保存 部分结果如下: 一、回归决策树的参数 DecisionTreeRegress…

基于springboot+mybatis+vue的项目实战之增删改查CRUD

目录结构 PeotController.java package com.example.controller;import com.example.pojo.Peot; import com.example.pojo.Result; import com.example.service.PeotService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web…

分布式锁讲解

概括 分布式锁是一种用于在分布式系统中实现同步机制的锁。在单机系统中,我们可以使用如Java中的synchronized关键字或者 ReentrantLock来实现线程间的同步,但在分布式系统中,由于多个节点(服务器)之间的并发操作&am…

谷歌CEO最新访谈:AI浪潮仍处于早期阶段,公司未来最大威胁是执行力不足

作为搜索领域无可争议的霸主,谷歌改变了我们生活的方方面面,从日常琐事到工作事务,再到我们的沟通方式。多年来,谷歌一直是互联网的窗口,为我们提供大量知识和信息,但如今,随着其他类似平台的崛…

融知财经:期货交易的规则和操作方法

期货交易是指在未来的某一特定时期,买卖双方通过签订合约的方式,约定以某种价格买卖一定数量的某种商品或资产的行为。期货交易的规则和操作方法如下: 期货交易的规则和操作方法 1、双向交易: 期货市场允许投资者进行多头&#xf…

Chrono下载管理器:提升下载体验,有效管理文件

名人说:莫愁千里路,自有到来风。 ——钱珝 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 目录 一、介绍二、下载安装1、Chrome应用商店(需科学)2、第三方直链下载 三、使…

【密码守护者】让弱密码无处遁形,保护你的UOS系统安全!

欢迎点赞、关注、分享,后期将会有更多的工作小工具分享给大家,嘻嘻 密码,是守护我们数字世界的钥匙。一个强大、复杂的密码,能够有效地抵御黑客攻击和信息泄露的风险。但在日常使用中,许多人因为方便记忆而选择了简单易…

【Linux】yum与vim

文章目录 软件包管理器:yumLinux安装和卸载软件包Linux中的编辑器:vimvim下的底行模式vim下的正常模式vim下的替换模式vim下的视图模式vim下的多线程 软件包管理器:yum yum其实就是一个软件,也可以叫商店 和你手机上的应用商店或app store一…

Meta-SR: A Magnification-Arbitrary Network for Super-Resolution

CVPR2019https://github.com/XuecaiHu/Meta-SR-Pytorch 问题引入 首个解决任意尺度超分问题的模型,借鉴了meta-learning的思想;weight prediction strategy(meta-learning):神经网络的权重是由另一个神经网络预测的,而不是通过从…

【16-Ⅱ】Head First Java 学习笔记

HeadFirst Java 本人有C语言基础,通过阅读Java廖雪峰网站,简单速成了java,但对其中一些入门概念有所疏漏,阅读本书以弥补。 第一章 Java入门 第二章 面向对象 第三章 变量 第四章 方法操作实例变量 第五章 程序实战 第六章 Java…

【win10 文件夹数量和看到不一致查看隐藏文件已经打开,Thumb文件作妖】

目录 任务介绍:重命名规则修改前修改后 实现思路VB代码实现BUG犯罪现场(眼见不一定为实)破案1:抓顶风作案的反贼!!!破案2:破隐身抓刺客!!!杀器&am…

JavaWeb之Servlet(上)

前言 1. 什么是Servlet (1) Servlet介绍 (2) Servlet运行于支持Java的应用服务器中。 (3) Servlet工作模式: 2. Servlet API 3. 第一个Servlet (1) 创建一个类实现Servlet接口,重写方法。或继承HttpServlet亦可 (2) 在web.xml文档中配置映射关系 标签的执行…

书生浦语训练营第2期-第7节作业

一、基础作业 二、进阶作业

作为餐饮行业HR,怎么选择一套合适的HCM人事管理系统?

在餐饮业这个行业中,人员流动性较高,特别是对于服务员和厨师这类基层员工,招聘一直是一个难题。根据艾瑞数据测算,到2024年,中国餐饮行业的年收入将超过6万亿元,年复合增长率高达8.8%。作为餐饮企业的品牌战…

Vue从入门到实战Day03

一、生命周期 1. 生命周期四个阶段 思考: ①什么时候可以发送初始化渲染请求? 答:越早越好,在创建阶段后 ②什么时候可以开始操作DOM? 答:至少DOM得渲染出来,在挂载阶段结束后。 Vue生命周…

【用文本生成歌声】Learn2Sing 2.0——歌声转换算法即梅尔频谱详解

一. 频谱图与梅尔谱图的介绍 频谱图:频谱图可以理解为一堆垂直堆叠在一起的快速傅里叶变换结果。 1.1 信号 在进入频谱图模块之前,首先我们需要了解信号是什么。 信号就是某一特定量随时间变化,对于音频来说,这个特定的变化量就…

Django之创建Model以及后台管理

一,创建项目App python manage.py startapp App 二,在App.models.py中创建类,以下是示例 class UserModel(models.Model):uid models.AutoField(primary_keyTrue, auto_createdTrue)name models.CharField(max_length10, uniqueTrue, db…

HFSS学习-day3-HFSS的工作界面

工作界面也称为用户界面,是HFSS软件使用者的工作环境:了解、熟悉这个工作环境是掌握HFSS软件使用的第一步 HFSS工作环境介绍 1.HFSS工作界面简单的组成说明2.工作界面中各个工作窗口功能主菜单工具栏项目管理窗口属性窗口信息管理窗口进程窗口三维模型窗口 3.HFSS主…

【Lammps】lammps常用入门建模命令(一)

【Lammps】lammps常用入门建模命令 前言脚本总览1、units2、dimension3、boundary4、atom_style原子模型构建5、lattice6、region7、create_box8、creat_atoms1. 在盒子box内填充原子2.在指定区域(region)内填充原子3.生成单个原子4.随机生成原子 9、mas…

影视极品转场音效大全,经典获奖通用音效素材

一、素材描述 本套音效素材,大小15.02G,16个压缩文件。 二、素材目录 01-华纳兄弟电影音效库合辑(2个压缩文件) 02-影视极品转场音效(2个压缩文件) 03-好莱坞经典综合音效(4个压缩文件&…