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

[工程构建] 使用 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>尊敬的用户您好&#xff…...

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. 入门阶段 理论学习&#xff1a; 了解云计算和容器技术的基本概念。学习Docker基础知识&#xff0c;包括容器创建、镜像管理等。阅读Kubernetes官方文档的入门部分&#xff0c;了解Kubernetes的核心概念。 实操练习&#xff1a; 安装Docker环境。运行你的第一个Docker容器…...

2014年国赛高教杯数学建模B题创意平板折叠桌解题全过程文档及程序

2014年国赛高教杯数学建模 B题 创意平板折叠桌 某公司生产一种可折叠的桌子&#xff0c;桌面呈圆形&#xff0c;桌腿随着铰链的活动可以平摊成一张平板&#xff08;如图1-2所示&#xff09;。桌腿由若干根木条组成&#xff0c;分成两组&#xff0c;每组各用一根钢筋将木条连接…...

PyCharm打开及配置现有工程(详细图解)

本文详细介绍了如何利用Pycharm打开一个现有的工程&#xff0c;其中包括编译器的配置。 PyCharm打开及配置现有工程 1、打开工程2、配置编译器 1、打开工程 双击PyCharm软件&#xff0c;点击左上角 文件 >> 打开(O)… 选中想要打开的项目之后点击“确定” 2、配置编译器…...

CSP-J

CSP那些事儿 OI赛制是啥OI赛制下的CCF-CSPCSP简介CSP-J考试&#xff08;仅山东&#xff09;考试时间考试地点考试结构 写在最后有趣的代码&#xff1a; OI赛制是啥 OI赛制&#xff0c;不详细说了&#xff0c;就是一股脑做好几个题&#xff0c;一起提交的比赛&#xff08;通俗易…...

Linux系统:Linux中ln命令用法

ln命令功能 将一个文件或目录在同一个文件系统或者另一个不同的文件系统的某个位置建立一个链接&#xff0c;类似windows系统中的超链接&#xff0c;这样当我们在链接处访问被链接的目录或文件时就可以通过此链接来访问&#xff0c;不必要再进入要访问的文件系统中。 建立链接…...

在SpringBoot+VUE中 实现登录-RSA的加密解密

步骤-先理清楚在动手 前端首先调用后端的公钥接口,在前端加密密码传输至后端登录接口后端用私钥解密码拿着用户名去数据库查询出来的盐值加密的 密码1用私钥解密密码登录密码加盐值得到 密码2比较密码1与密码2,相同则登录成功&#xff0c;跳转首页&#xff5c;其他页面 前端实…...

基于Android11简单分析audio_policy_configuration.xml

开篇先贴上一个高通的例子&#xff0c;后续基于此文件做具体分析。 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端口

问题描述&#xff1a; zookeeper默认端口号修改为了2182&#xff0c;kafka-manager的配置文件application.conf中也已经修改了zkhosts为新的端口号&#xff0c;然而启动kafka-manger时报错连接连接超时&#xff0c;发现连接的还是2181端口&#xff0c;很奇怪&#xff1f;&…...

RabbitMQ 入门(三)SpringAMQP

一、Spring AMQP 简介 SpringAMQP是基于RabbitMQ封装的一套模板&#xff0c;并且还利用SpringBoot对其实现了自动装配&#xff0c;使用起来非常方便。 SpringAmqp的官方地址&#xff1a;https://spring.io/projects/spring-amqp SpringAMQP提供了三个功能&#xff1a; - 自动…...

celery 项目中mysql 数据库连接数耗尽事故记录

python 项目中使用 celery 中导致mysql数据库连接耗尽记录【mysql数据库连接池使用错误】 结论&#xff1a;由于使用 celery 进行项目的多任务管理&#xff0c;在worker任务定义的过程中&#xff0c;使用了 dbutils 中的 PooledDB 连接池进行 mysql数据库连接&#xff0c; 因此…...

Python数据分析-Scipy科学计算法

1.认识Scipy SciPy&#xff08;发音为 "Sigh Pie"&#xff09;是一个开源的 Python 算法库和数学工具包。 通常与 NumPy、Matplotlib 和 pandas 等库一起使用&#xff0c;这些库共同构成了 Python 的科学计算基础。 2.使用Scipy基本函数 2.1 引用Scipy函数 impor…...

【Python Django + Vue】酒店在线预订系统:用技术说话!

&#x1f393; 作者&#xff1a;计算机毕设小月哥 | 软件开发专家 &#x1f5a5;️ 简介&#xff1a;8年计算机软件程序开发经验。精通Java、Python、微信小程序、安卓、大数据、PHP、.NET|C#、Golang等技术栈。 &#x1f6e0;️ 专业服务 &#x1f6e0;️ 需求定制化开发源码提…...

禁用微软的windos安全中心

目录 一、为什么禁用 二、WDControl_1.5.0程序禁用windows安全中心 步骤1--- 步骤2--- 三、禁用widows安全中心成功 一、为什么禁用 描述&#xff1a;下载第三方软件常常会收到病毒防护秒杀&#xff0c; 第1---直接无法下载 第2---提前下载在U盘解压会被干掉程序文件 …...

2.html编辑器介绍

html编辑器介绍 HTML 编辑器推荐 理论上我们可以使用记事本进行html编码和开发&#xff0c;但是在实际开发html页面的时候&#xff0c;使用一些专业的开发工具可以使我们更加快速和高效的进行开发&#xff0c;下面介绍几种开发工具&#xff1a; VS Code&#xff1a;https://…...

树莓派应用--AI项目实战篇来啦-17.YOLOv8目标检测-安全帽检测

1. YOLOv8介绍 YOLOv8是Ultralytics公司2023年推出的Yolo系列目标检测算法&#xff0c;可以用于图像分类、物体检测和实例分割等任务。YOLOv8作为YOLO系列算法的最新成员&#xff0c;在损失函数、Anchor机制、样本分配策略等方面进行了全面优化和创新。这些改进不仅提高了模型的…...

git-secret介绍

git-secret介绍 git-secret 是一个与git兼容的命令行工具,旨在安全地存储和管理敏感数据,如源代码中的密码、密钥以及敏感文件。它通过 GPG 加密来保护文件,确保只有授权的用户才能访问这些敏感信息。 使用流程 1、安装 Git-Secret:在本地开发环境中安装 git-secret。 2…...

【实战】Nginx+Lua脚本+Redis 实现自动封禁访问频率过高IP

大家好&#xff0c;我是冰河~~ 自己搭建的网站刚上线&#xff0c;短信接口就被一直攻击&#xff0c;并且攻击者不停变换IP&#xff0c;导致阿里云短信平台上的短信被恶意刷取了几千条&#xff0c;加上最近工作比较忙&#xff0c;就直接在OpenResty上对短信接口做了一些限制&am…...

计算机专业大一课程:线性代数探秘

计算机专业大一课程&#xff1a;线性代数探秘 对于计算机专业的大一新生来说&#xff0c;线性代数是一门基础且重要的课程。它不仅是数学的一个分支&#xff0c;更是计算机科学中不可或缺的工具。那么&#xff0c;线性代数究竟包含哪些内容&#xff0c;对我们的计算机学习有何…...

vscode写markdown插入图片视频并放在指定目录

目录 前言正文 前言 各种云文档非常好用&#xff0c;但是当你想把这些资料保存在本地时&#xff0c;markdown我觉得是最好的选择 markdown编辑器也有很多&#xff0c;但我还是觉得vscode最好用&#xff0c;直接粘贴文件就可以插入也类似云文档的使用体验&#xff0c;但是想要…...

鸿蒙富文本显示

1.使用 RichText 组件&#xff08;ArkTS&#xff09; 背景知识&#xff1a;在 ArkTS&#xff08;一种鸿蒙应用开发语言&#xff09;中&#xff0c;RichText组件提供了更强大的富文本显示功能。它允许设置不同的文本样式&#xff0c;包括字体、颜色、字号等多种属性。 Rich Te…...

手写mybatis之细化XML语句构建器,完善静态SQL解析

前言 1&#xff1a;在流程上&#xff0c;通过 DefaultSqlSession#selectOne 方法调用执行器&#xff0c;并通过预处理语句处理器 PreparedStatementHandler 执行参数设置和结果查询。 2&#xff1a;那么这个流程中我们所处理的参数信息&#xff0c;也就是每个 SQL 执行时&#…...

使用Milvus和Llama-agents构建更强大的Agent系统

代理&#xff08;Agent&#xff09;系统能够帮助开发人员创建智能的自主系统&#xff0c;因此变得越来越流行。大语言模型&#xff08;LLM&#xff09;能够遵循各种指令&#xff0c;是管理 Agent 的理想选择&#xff0c;在许多场景中帮助我们尽可能减少人工干预、处理更多复杂任…...

Python 工具库每日推荐【Arrow】

文章目录 引言Python时间日期处理库的重要性今日推荐:Arrow工具库主要功能:使用场景:安装与配置快速上手示例代码代码解释实际应用案例案例:跨时区会议安排器案例分析高级特性时间范围和区间自定义时间格式扩展阅读与资源优缺点分析优点:缺点:总结【 已更新完 TypeScript…...

Win10 安装 Redis 数据库

一、Redis 数据库介绍 Redis 是一个开源的高性能键值对&#xff08;key-value&#xff09;的非关系型数据库。它通常用作数据结构服务器&#xff0c;支持多种类型的数据结构&#xff0c;如字符串&#xff08;strings&#xff09;、哈希&#xff08;hashes&#xff09;、列表&a…...

使用springboot生成war包

1.生成war包 1.1 更改pom包 打开一个springboot 项目 &#xff0c;右击项目名从项目管理器打开 在pom.xml文件中插入以下两个依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><…...