[工程构建] 使用 pkg-config 的 cmake 模板
可执行文件
# 1) cmake basic
cmake_minimum_required(VERSION 3.12) #cmake version check
set(CXX_STANDARD 17) #c++ standard version)# 2) project info
#auto generated variables as below:
#PROJECT_NAME: "hello"
#hello_BINARY_DIR: build root dir
#hello_SOURCE_DIR: source root dir
project(hello LANGUAGES C CXX) #project name
message("build root dir: ${hello_BINARY_DIR}")
message("source root dir: ${hello_SOURCE_DIR}")# 3) specify source files and create target
#SOURCE_FILES: all c cpp and hpp as source file
file(GLOB_RECURSE SOURCE_FILES #glob all source files(c cpp hpp , h is excluded)${hello_SOURCE_DIR}/*.c${hello_SOURCE_DIR}/*.cpp${hello_SOURCE_DIR}/*.hpp
)
list(FILTER SOURCE_FILES EXCLUDE REGEX "CMakeFiles/*") #exclude cmake files from source list
message("source files: ${SOURCE_FILES}")
add_executable(${PROJECT_NAME} ${SOURCE_FILES}) #add executable file# 4) package dependency (pkg-config)
find_package(PkgConfig REQUIRED)#GTK_INCLUDE_DIRS : HEADER SERARCH PATHS
#GTK_LIBRARIES : LIBRARY NAME
#GTK_LIBRARY_DIRS : LIBRARY PATHS
pkg_check_modules(GTK REQUIRED gtk+-3.0)# 5) include and link
include_directories( #head search path${GTK_INCLUDE_DIRS}
)
link_directories( #library search path ${GTK_LIBRARY_DIRS}
)
target_link_libraries(${PROJECT_NAME} #what libraries needs to link${GTK_LIBRARIES}
)# 6) ADD_DEFINITIONS
ADD_DEFINITIONS(-D LINUX)# 7) install
#install ${PROJECT_NAME} to ~/bin
set(INSTALL_PATH ~/bin)
install(TARGETS ${PROJECT_NAME} DESTINATION ${INSTALL_PATH}
)
#install config file to ~/bin
set(INSTALL_PATH ~/bin)
file(GLOB_RECURSE CONFIG_FILES ${hello_SOURCE_DIR}/*.ui${hello_SOURCE_DIR}/*.ini${hello_SOURCE_DIR}/*.conf
)
install(FILES ${CONFIG_FILES}DESTINATION ${INSTALL_PATH}
)
动态库
相关文章:
[工程构建] 使用 pkg-config 的 cmake 模板
可执行文件 # 1) cmake basic cmake_minimum_required(VERSION 3.12) #cmake version check set(CXX_STANDARD 17) #c standard version)# 2) project info #auto generated variables as below: #PROJECT_NAME: "hello" #hello_BINARY_DIR: build root dir #hello_…...
MATLAB 注释快捷键
matlab 前言单行注释多行注释 快捷键使用菜单 前言 单行注释 % 这是一个单行注释 x 10; % 这是另一个单行注释多行注释 %{ 这是一个多行注释 它可以包含多行文本 x 10; % 这行代码也会被注释掉 %}快捷键 在 MATLAB 编辑器中,可以使用快捷键来快速注释和取消注…...
8.优化存储过程的性能(8/10)
优化存储过程的性能 1.引言 存储过程是数据库系统中预先编写好的SQL语句集合,它们被保存在数据库服务器上,可以在需要时被调用执行。存储过程的使用可以提高数据库操作的效率,减少网络通信,并且可以封装复杂的逻辑,使…...
Django发送邮件代理服务器配置
根路由下配置 MAIL_BACKEND django.core.mail.backends.smtp.EmailBackend EMAIL_HOST smtp.qq.com EMAIL_HOST_USER 66897079qq.com EMAIL_HOST_PASSWORD aavlzhzvqorbcahcEMAIL_PORT 465 EMAIL_USE_SSL True发送邮件 message "<p>尊敬的用户您好ÿ…...
uniapp__微信小程序使用秋云ucharts折线图双轴
1、子组件 <template><view class"charts-box"><qiun-data-charts type"line":opts"computedOpts":chartData"chartData"/></view> </template><script> export default {props: {chartData: {t…...
云原生运维 - 旅程(简约版)
1. 入门阶段 理论学习: 了解云计算和容器技术的基本概念。学习Docker基础知识,包括容器创建、镜像管理等。阅读Kubernetes官方文档的入门部分,了解Kubernetes的核心概念。 实操练习: 安装Docker环境。运行你的第一个Docker容器…...
2014年国赛高教杯数学建模B题创意平板折叠桌解题全过程文档及程序
2014年国赛高教杯数学建模 B题 创意平板折叠桌 某公司生产一种可折叠的桌子,桌面呈圆形,桌腿随着铰链的活动可以平摊成一张平板(如图1-2所示)。桌腿由若干根木条组成,分成两组,每组各用一根钢筋将木条连接…...
PyCharm打开及配置现有工程(详细图解)
本文详细介绍了如何利用Pycharm打开一个现有的工程,其中包括编译器的配置。 PyCharm打开及配置现有工程 1、打开工程2、配置编译器 1、打开工程 双击PyCharm软件,点击左上角 文件 >> 打开(O)… 选中想要打开的项目之后点击“确定” 2、配置编译器…...
CSP-J
CSP那些事儿 OI赛制是啥OI赛制下的CCF-CSPCSP简介CSP-J考试(仅山东)考试时间考试地点考试结构 写在最后有趣的代码: OI赛制是啥 OI赛制,不详细说了,就是一股脑做好几个题,一起提交的比赛(通俗易…...
Linux系统:Linux中ln命令用法
ln命令功能 将一个文件或目录在同一个文件系统或者另一个不同的文件系统的某个位置建立一个链接,类似windows系统中的超链接,这样当我们在链接处访问被链接的目录或文件时就可以通过此链接来访问,不必要再进入要访问的文件系统中。 建立链接…...
在SpringBoot+VUE中 实现登录-RSA的加密解密
步骤-先理清楚在动手 前端首先调用后端的公钥接口,在前端加密密码传输至后端登录接口后端用私钥解密码拿着用户名去数据库查询出来的盐值加密的 密码1用私钥解密密码登录密码加盐值得到 密码2比较密码1与密码2,相同则登录成功,跳转首页|其他页面 前端实…...
基于Android11简单分析audio_policy_configuration.xml
开篇先贴上一个高通的例子,后续基于此文件做具体分析。 1 <?xml version"1.0" encoding"UTF-8" standalone"yes"?> 2 <!-- Copyright (c) 2016-2019, The Linux Foundation. All rights reserved 3 Not a Contribut…...
kafka-manager修改zookeeper端口号后启动仍然连接2181端口
问题描述: zookeeper默认端口号修改为了2182,kafka-manager的配置文件application.conf中也已经修改了zkhosts为新的端口号,然而启动kafka-manger时报错连接连接超时,发现连接的还是2181端口,很奇怪?&…...
RabbitMQ 入门(三)SpringAMQP
一、Spring AMQP 简介 SpringAMQP是基于RabbitMQ封装的一套模板,并且还利用SpringBoot对其实现了自动装配,使用起来非常方便。 SpringAmqp的官方地址:https://spring.io/projects/spring-amqp SpringAMQP提供了三个功能: - 自动…...
celery 项目中mysql 数据库连接数耗尽事故记录
python 项目中使用 celery 中导致mysql数据库连接耗尽记录【mysql数据库连接池使用错误】 结论:由于使用 celery 进行项目的多任务管理,在worker任务定义的过程中,使用了 dbutils 中的 PooledDB 连接池进行 mysql数据库连接, 因此…...
Python数据分析-Scipy科学计算法
1.认识Scipy SciPy(发音为 "Sigh Pie")是一个开源的 Python 算法库和数学工具包。 通常与 NumPy、Matplotlib 和 pandas 等库一起使用,这些库共同构成了 Python 的科学计算基础。 2.使用Scipy基本函数 2.1 引用Scipy函数 impor…...
【Python Django + Vue】酒店在线预订系统:用技术说话!
🎓 作者:计算机毕设小月哥 | 软件开发专家 🖥️ 简介:8年计算机软件程序开发经验。精通Java、Python、微信小程序、安卓、大数据、PHP、.NET|C#、Golang等技术栈。 🛠️ 专业服务 🛠️ 需求定制化开发源码提…...
禁用微软的windos安全中心
目录 一、为什么禁用 二、WDControl_1.5.0程序禁用windows安全中心 步骤1--- 步骤2--- 三、禁用widows安全中心成功 一、为什么禁用 描述:下载第三方软件常常会收到病毒防护秒杀, 第1---直接无法下载 第2---提前下载在U盘解压会被干掉程序文件 …...
2.html编辑器介绍
html编辑器介绍 HTML 编辑器推荐 理论上我们可以使用记事本进行html编码和开发,但是在实际开发html页面的时候,使用一些专业的开发工具可以使我们更加快速和高效的进行开发,下面介绍几种开发工具: VS Code:https://…...
树莓派应用--AI项目实战篇来啦-17.YOLOv8目标检测-安全帽检测
1. YOLOv8介绍 YOLOv8是Ultralytics公司2023年推出的Yolo系列目标检测算法,可以用于图像分类、物体检测和实例分割等任务。YOLOv8作为YOLO系列算法的最新成员,在损失函数、Anchor机制、样本分配策略等方面进行了全面优化和创新。这些改进不仅提高了模型的…...
【JavaSE】绘图与事件入门学习笔记
-Java绘图坐标体系 坐标体系-介绍 坐标原点位于左上角,以像素为单位。 在Java坐标系中,第一个是x坐标,表示当前位置为水平方向,距离坐标原点x个像素;第二个是y坐标,表示当前位置为垂直方向,距离坐标原点y个像素。 坐标体系-像素 …...
Yolov8 目标检测蒸馏学习记录
yolov8系列模型蒸馏基本流程,代码下载:这里本人提交了一个demo:djdll/Yolov8_Distillation: Yolov8轻量化_蒸馏代码实现 在轻量化模型设计中,**知识蒸馏(Knowledge Distillation)**被广泛应用,作为提升模型…...
初探Service服务发现机制
1.Service简介 Service是将运行在一组Pod上的应用程序发布为网络服务的抽象方法。 主要功能:服务发现和负载均衡。 Service类型的包括ClusterIP类型、NodePort类型、LoadBalancer类型、ExternalName类型 2.Endpoints简介 Endpoints是一种Kubernetes资源…...
iOS性能调优实战:借助克魔(KeyMob)与常用工具深度洞察App瓶颈
在日常iOS开发过程中,性能问题往往是最令人头疼的一类Bug。尤其是在App上线前的压测阶段或是处理用户反馈的高发期,开发者往往需要面对卡顿、崩溃、能耗异常、日志混乱等一系列问题。这些问题表面上看似偶发,但背后往往隐藏着系统资源调度不当…...
【从零学习JVM|第三篇】类的生命周期(高频面试题)
前言: 在Java编程中,类的生命周期是指类从被加载到内存中开始,到被卸载出内存为止的整个过程。了解类的生命周期对于理解Java程序的运行机制以及性能优化非常重要。本文会深入探寻类的生命周期,让读者对此有深刻印象。 目录 …...
GO协程(Goroutine)问题总结
在使用Go语言来编写代码时,遇到的一些问题总结一下 [参考文档]:https://www.topgoer.com/%E5%B9%B6%E5%8F%91%E7%BC%96%E7%A8%8B/goroutine.html 1. main()函数默认的Goroutine 场景再现: 今天在看到这个教程的时候,在自己的电…...
人工智能--安全大模型训练计划:基于Fine-tuning + LLM Agent
安全大模型训练计划:基于Fine-tuning LLM Agent 1. 构建高质量安全数据集 目标:为安全大模型创建高质量、去偏、符合伦理的训练数据集,涵盖安全相关任务(如有害内容检测、隐私保护、道德推理等)。 1.1 数据收集 描…...
tauri项目,如何在rust端读取电脑环境变量
如果想在前端通过调用来获取环境变量的值,可以通过标准的依赖: std::env::var(name).ok() 想在前端通过调用来获取,可以写一个command函数: #[tauri::command] pub fn get_env_var(name: String) -> Result<String, Stri…...
React从基础入门到高级实战:React 实战项目 - 项目五:微前端与模块化架构
React 实战项目:微前端与模块化架构 欢迎来到 React 开发教程专栏 的第 30 篇!在前 29 篇文章中,我们从 React 的基础概念逐步深入到高级技巧,涵盖了组件设计、状态管理、路由配置、性能优化和企业级应用等核心内容。这一次&…...
【工具教程】多个条形码识别用条码内容对图片重命名,批量PDF条形码识别后用条码内容批量改名,使用教程及注意事项
一、条形码识别改名使用教程 打开软件并选择处理模式:打开软件后,根据要处理的文件类型,选择 “图片识别模式” 或 “PDF 识别模式”。如果是处理包含条形码的 PDF 文件,就选择 “PDF 识别模式”;若是处理图片文件&…...
