当前位置: 首页 > news >正文

cmaklist流程控制——调试及发布

cmaklist流程控制

目前只会配置-编译调试-打包发布,并且不会workflow控制
后续学习配置-编译调试-测试-打包发布workflow控制,理解整个流程,目前对流程控制理解也不够。

1.CMake Presets

先于Cmakelist文件,指导项目配置。
参考CMake之Presets编写
**CMAKE_BUILD_TYPE:**指定了编译类型,debug还是release
**CMAKE_INSTALL_PREFIX:**指定了cmakelist中install的前缀路径,类似于cmake -CMAKE_INSTALL_PREFIX
CMakePresets.json

{"version": 8,"configurePresets": [{"name": "radar-debug","displayName": "radar-debug","description": "radar-debug","generator": "Unix Makefiles","binaryDir": "${sourceDir}/out/debug/build","cacheVariables": {"CMAKE_BUILD_TYPE": "Debug","CMAKE_INSTALL_PREFIX": "${sourceDir}/out/debug/install"}},{"name": "radar-release","displayName": "radar-release","description": "radar-release","generator": "Unix Makefiles","binaryDir": "${sourceDir}/out/release/build","cacheVariables": {"CMAKE_BUILD_TYPE": "Release","CMAKE_INSTALL_PREFIX": "${sourceDir}/out/release/install"}}]
}

2.Cmakelist

通过Presets配置的CMAKE_BUILD_TYPE 控制编译,配合add_definitions(-DDEBUG_PRINTF)控制程序表现

cmake_minimum_required(VERSION 3.5.0)
project(radarSerial VERSION 0.1.0 LANGUAGES C CXX)# Set the default build type to Release if not specified
if(NOT CMAKE_BUILD_TYPE)set(CMAKE_BUILD_TYPE Release CACHE STRING "Build type" FORCE)
endif()# Configure Debug and Release flags
set(CMAKE_CXX_FLAGS_DEBUG "-g -O0")  # Debug信息,关闭优化
set(CMAKE_CXX_FLAGS_RELEASE "-O3")   # 高级优化if(CMAKE_BUILD_TYPE STREQUAL "Debug")add_definitions(-DDEBUG_PRINTF)add_definitions(-DDEBUG_ENV)
endif()find_package(MY_LIBRARY_PATH NAMES CppLinuxSerial PATHS ${CMAKE_CURRENT_SOURCE_DIR}/lib/cmake NO_DEFAULT_PATH REQUIRED)set(LIB_mqtt3c_PATH /usr/local/lib/)message(STATUS "CppLinuxSerial_DIR = ${CppLinuxSerial_DIR}")add_executable(radarSerial main.cpp)target_include_directories(radarSerial PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/include""${CMAKE_CURRENT_SOURCE_DIR}/include/CppLinuxSerial"
)target_sources(radarSerialPRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src/comm.cpp${CMAKE_CURRENT_SOURCE_DIR}/src/mqtt.cpp${CMAKE_CURRENT_SOURCE_DIR}/src/cJSON.c)target_link_libraries(radarSerial CppLinuxSerial::CppLinuxSerial pthread paho-mqtt3c)install(TARGETS radarSerial RUNTIME DESTINATION bin)
install(FILES
${LIB_mqtt3c_PATH}/libpaho-mqtt3c.so 
${LIB_mqtt3c_PATH}/libpaho-mqtt3c.so.1 
${LIB_mqtt3c_PATH}/libpaho-mqtt3c.so.1.3 
${CMAKE_CURRENT_SOURCE_DIR}/lib/libCppLinuxSerial.soDESTINATION lib)

相关文章:

cmaklist流程控制——调试及发布

cmaklist流程控制 目前只会配置-编译调试-打包发布,并且不会workflow控制 后续学习配置-编译调试-测试-打包发布,workflow控制,理解整个流程,目前对流程控制理解也不够。 1.CMake Presets 先于Cmakelist文件,指导项…...

制作一个能对话能跳舞的otto机器人

OTTO机器人是一个开源外壳,硬件和软件的桌面机器人项目,非常适合新手研究和拓展。记住,他是一个能移动有表情能声音的机器人。 b站有很多演示和组装的视频,我就不多说了,照着做就好,因为硬件我也是刚入门&…...

git配置SSH

1 打开cmd窗口 2 在窗口中输入如下命令: 配置用户名: git config --global user.name “gyk” 配置邮箱: git config --global user.email “247929163qq.com” 继续在Git命令窗口中输入如下命令,即可生成SSH公钥和私钥 ss…...

mozilla/pdf.js view.html加载指定页码

mozilla/pdf.js view.html加载指定页码 在Mozilla’s PDF.js中,如果你想要在viewer.html加载时直接跳转到指定的页码,你可以通过修改URL来实现。 PDF.js使用查询参数来处理URL,其中page参数用于指定页码。你可以通过修改URL的查询字符串来设…...

Qt之QFuture理解

结构 #mermaid-svg-J9J683RG8QjtEqoM {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-J9J683RG8QjtEqoM .error-icon{fill:#552222;}#mermaid-svg-J9J683RG8QjtEqoM .error-text{fill:#552222;stroke:#552222;}#merm…...

求二叉树的高度(递归和非递归)

假设二叉树采用二叉链表存储结构,设计一个算法求二叉树的高度。 递归: int getTreeHight(BiTree T){if(TNULL){return 0;}else {int lh getTreeHight(T->lchild);int rh getTreeHight(T->rchild);return (lh>rh?lh:rh)1;}}时间复杂度O(n)&a…...

Java查找算法——(四)分块查找(完整详解,附有代码+案例)

文章目录 分块查找1.1普通分块查找 分块查找 1.1普通分块查找 分块原则: 块内无序,块间有序:前一块中的最大数据,小于后一块中所有的数据,块与块之间不能有数据重复的交集。块的数量一般等于数字个数开根号 核心思路&#xff…...

进制数知识(2)—— 浮点数在内存中的存储 和 易混淆的二进制知识总结

目录 1. 浮点数在内存中的存储 1.1 浮点数的大V表示法 1.2 浮点数的存储格式 1.3 浮点数的存入规则 1.4 浮点数的读取规则 1.5 补充:移码与掩码 1.6 题目解析 2. 易错的二进制知识 2.0 符号位到底会不会参与运算? 2.0.1 存储前的编码变化运算 …...

类似QQ聊天功能的Java程序

实现一个类似QQ聊天功能的Java程序需要考虑以下几个关键点: 用户界面:用于展示消息和输入消息。网络通信:用于客户端之间的信息传输。用户管理:用于管理用户的登录、注册和状态。消息存储:用于存储聊天记录。 这里提…...

Redis 键值对数据库学习

目录 一、介绍 二、安装以及连接 三、设置连接密码 四、连接报错 五、redis 操作字符串以及过期时间 六、 redis 列表操作 七、redis 集合操作 八、hash 哈希操作 九、redis 发布和订阅操作 十、RDB和AOF的两种数据持久化机制 十一、 其他机器连接redis 十二、 pyt…...

逆向推理+ChatGPT,让论文更具说服力

学境思源,一键生成论文初稿: AcademicIdeas - 学境思源AI论文写作 使用ChatGPT辅助“逆向推理”技巧,可以显著提升论文的质量和说服力。逆向推理从结论出发,倒推所需的证据和论点,确保整个论证过程逻辑严密且无漏洞。…...

「JavaScript深入」一文说明白JS的执行上下文与作用域

JavaScript深入 — 执行上下文与作用域 上下文执行上下文生命周期创建阶段执行阶段回收阶段 执行栈作用域链作用域词法作用域(静态作用域) 上下文 变量或函数的上下文决定了它们可以访问哪些数据,以及它们的行为。 每个上下文都有一个关联的…...

Qt C++设计模式->组合模式

组合模式(Composite Pattern)是一种结构型设计模式,允许你将对象组合成树形结构以表示部分与整体的层次关系。组合模式使得客户端可以以统一的方式对待单个对象和组合对象,简化了对复杂树形结构的操作。 组合模式的应用场景 组合…...

Acwing Bellman-Ford SPFA

1. Bellman-Ford 该算法适用于有负权边的情况,注意:如果有负权环的话,最短路就不一定存在了。时间复杂度 O ( m n ) . O(mn). O(mn).该算法可以求出来图中是否存在负权回路,但求解负权回路,通常用SPFA算法&#xff0c…...

我能禁止使用某协议的ip禁止访问我的资源吗

是的,你可以禁止使用某个协议的IP地址访问你的资源。这种操作通常涉及网络防火墙、服务器配置或应用程序设置,具体方法取决于你的网络环境和使用的技术。以下是一些常见的实现方法: 1. 使用防火墙 大多数防火墙(硬件或软件&…...

快速理解TCP协议(二)——TCP协议中的拥塞控制机制详解

在计算机网络中,TCP(传输控制协议)是一种广泛使用的面向连接的、可靠的、基于字节流的传输层通信协议。TCP协议通过一系列复杂的机制来确保数据的可靠传输,其中拥塞控制是至关重要的一环。本文将深入探讨TCP协议中的拥塞控制机制&…...

Linux:debug: systemtap: ubacktrace

https://docs.huihoo.com/systemtap/sourceware.org/systemtap/SystemTap_Beginners_Guide/ustack.html 这个函数可以帮助将user level的backtrace打印出来。 stap -d /bin/ls --ldd \ -e probe process("ls").function("xmalloc") {print_usyms(ubacktra…...

使用AI进行需求分析的案例研究

生成式 AI 的潜在应用场景似乎无穷无尽。虽然这令人兴奋,但也可能让人不知所措。因此,团队在使用这项技术时需要有明确的目标:关键是要明确生成式 AI 在团队工作中能产生哪些实质性影响。 在软件工程中,一个引人注目的应用场景是…...

Python内置的re库

Python内置的re库是专门用于处理正则表达式的标准库。它提供了一系列函数和类,使得在Python程序中可以使用正则表达式进行字符串的搜索、替换、分割等操作。re库的使用非常广泛,几乎任何需要复杂文本处理的场景都可以用到它。 主要函数 1、complie函数…...

毕业设计选题:基于ssm+vue+uniapp的面向企事业单位的项目申报小程序

开发语言:Java框架:ssmuniappJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包:M…...

工单系统已经上线,但 IT 管理并没有真正变好

在很多企业中,引入 IT 工单系统往往被视为 IT 管理升级的重要一步。 有了统一入口、有了记录机制、有了流程流转,看起来一切都开始变得规范起来。但实际运行一段时间后,不少团队会发现: 工单确实在增加,流程也在走&…...

APT41 (Barium) 的演进:从游戏行业到供应链攻击的AI应用

前言 1. 技术背景 —— 这个技术在攻防体系中的位置 高级持续性威胁 (Advanced Persistent Threat, APT) 是网络攻防体系金字塔的顶端。它并非指某种单一技术,而是一个复杂的、有组织的、长期的网络攻击活动集合。在整个攻防图谱中,APT代表着最高级别的对…...

MongoDB开发者必备:Dbeaver旗舰版的地理空间数据操作全攻略

MongoDB开发者必备:Dbeaver旗舰版的地理空间数据操作全攻略 在位置服务(LBS)应用爆发的时代,地理空间数据处理能力已成为开发者核心技能。无论是共享经济中的车辆调度,还是电商平台的附近推荐,精准的地理查询直接影响用户体验。作…...

DecepGPT Schema-Driven Deception Detection with Multicultural Datasets and Robust Multimodal Learnin

DecepGPT: Schema-Driven Deception Detection with Multicultural Datasets and Robust Multimodal Learning Authors: Jiajian Huang, Dongliang Zhu, Zitong YU, Hui Ma, Jiayu Zhang, Chunmei Zhu, Xiaochun Cao Deep-Dive Summary: DeepGPT: 基于模式驱动的多文化数据集…...

Linux 配置文件 bashrc

本文详细介绍了Linux系统中配置文件bashrc的作用、使用方法和配置技巧。bashrc文件是bash shell在用户登录时自动执行的脚本,用于定义用户的环境变量和别名等个性化设置。文章首先解释了bashrc文件的重要性,并介绍了如何编辑和修改该文件。接着&#xff…...

别再只用Unity做游戏了!用Game4Automation PRO插件,手把手教你搭建一条虚拟生产线(附PLC连接避坑指南)

跨界开发者的工业仿真指南:用Unity打造虚拟生产线全流程 当游戏开发者遇上工业自动化,会碰撞出怎样的火花?Unity作为全球最流行的游戏引擎之一,早已突破了娱乐产业的边界。今天,我们将探索如何利用Game4Automation PRO…...

Crossplane认证考试指南:备考资源与实战题解析

Crossplane认证考试指南:备考资源与实战题解析 【免费下载链接】crossplane Crossplane 是一个开源的资源抽象层,用于管理多云计算资源,支持混合云和多云环境。 * 资源抽象层、多云和混合云环境管理 * 有什么特点:支持多种云服务提…...

如何用机器学习评估专利价值?专利权利要求广度分析实战指南

如何用机器学习评估专利价值?专利权利要求广度分析实战指南 【免费下载链接】patents-public-data Patent analysis using the Google Patents Public Datasets on BigQuery 项目地址: https://gitcode.com/gh_mirrors/pa/patents-public-data 在知识产权竞争…...

m3u8流媒体视频下载工具的技术实现与应用指南

m3u8流媒体视频下载工具的技术实现与应用指南 m3u8流媒体视频下载工具是一款基于现代Web技术栈开发的桌面应用程序,专门用于处理各类在线视频资源的下载需求。该工具采用TypeScript语言开发,结合Electron框架构建跨平台桌面应用,为用户提供专…...

AMFITRACK Gen3开发套件开箱测评:如何用电磁追踪技术搞定VR定位难题?

AMFITRACK Gen3开发套件深度评测:电磁追踪如何重塑VR定位体验 拆开AMFITRACK Gen3开发套件的包装箱时,那种精密仪器特有的金属质感立刻传递到指尖。作为第三代电磁运动跟踪系统的代表,这套设备正在挑战VR领域沿用多年的光学定位霸权。不同于需…...