CMakeLists.txt:打印find_package变量;判断库文件路径设定是否正确;install文件设置
CMake打印find_package变量;install文件设置
- 打印find_package找到的各种变量
- 判断库文件是否被找到
- install文件设置
- install详细说明
打印find_package找到的各种变量
目的:find_package后,想使用找到的include/lib文件夹。
find_package(YourPackage REQUIRED)get_property(pkg_vars DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY VARIABLES)
foreach(var ${pkg_vars})if(var MATCHES "^YourPackage_")message("${var} = ${${var}}")endif()
endforeach()
判断库文件是否被找到
目的:link_directories后,想知道某个库文件是否能被找到
在CMakeLists.txt文件中,可以使用find_library命令来搜索库文件的位置。该命令的语法如下:
find_library(<VAR> name1 [path1 path2 ...])
# 搜索名为mylib的库文件
find_library(MYLIB_LIB mylib)# 如果找到了库文件,则将其路径打印出来
if(MYLIB_LIB)message("Library found at ${MYLIB_LIB}")
else()message("Library not found")
endif()
在上述示例中,find_library命令会在默认的系统库路径中搜索名为mylib的库文件,并将其路径保存到MYLIB_LIB变量中。然后,根据MYLIB_LIB变量的值,打印出相应的信息。
install文件设置
目的:通过install安装文件
# 设置可执行文件的名称
set(EXECUTABLE_NAME my_executable)# 添加可执行文件的构建
add_executable(${EXECUTABLE_NAME} main.cpp)# 指定安装路径
install(TARGETS ${EXECUTABLE_NAME} DESTINATION /usr/local/bin)
在上面的示例中,install()命令指定了要安装的目标(即${EXECUTABLE_NAME})和目标的安装路径(即/usr/local/bin)。在构建和安装目标时,该可执行文件将被复制到指定的路径中。
除了可执行文件,还可以使用install()命令安装其他类型的文件,比如库文件、头文件、配置文件等。只需将目标类型和路径修改为相应的值即可。
install详细说明
在CMake中,install命令用于安装构建生成的二进制文件、库文件、头文件以及其他资源文件到指定的目录。它的基本语法如下:
install(TARGETS <target>[EXPORT <export-name>][RUNTIME DESTINATION <dir>][LIBRARY DESTINATION <dir>][ARCHIVE DESTINATION <dir>][INCLUDES DESTINATION <dir>]
)install(FILES <file>... DESTINATION <dir>)install(DIRECTORY <dir>... DESTINATION <dir>[FILE_PERMISSIONS <permissions>...][DIRECTORY_PERMISSIONS <permissions>...][USE_SOURCE_PERMISSIONS][CONFIGURATIONS [Debug|Release|...]][COMPONENT <component>][FILES_MATCHING][PATTERN <pattern>...][REGEX <regex>...][EXCLUDE][PERMISSIONS <permissions>...][NO_SOURCE_PERMISSIONS][NO_DESTINATION_PERMISSIONS]
)
其中,install命令可以有多个参数,主要有以下几种用法:
安装目标文件:通过TARGETS关键字指定要安装的目标文件,并通过DESTINATION关键字指定目标文件的安装路径。可以选择安装的目标类型,如可执行文件(RUNTIME)、库文件(LIBRARY)和静态库文件(ARCHIVE)。
安装文件:通过FILES关键字指定要安装的文件,并通过DESTINATION关键字指定文件的安装路径。
安装目录:通过DIRECTORY关键字指定要安装的目录,并通过DESTINATION关键字指定目录的安装路径。可以选择是否递归复制目录中的文件,以及设置目录和文件的权限等。
其他选项:可以使用其他选项来进一步控制安装过程,如设置文件的权限、根据配置类型选择安装文件等。
在CMakeLists.txt文件中,我们可以在项目的构建配置部分使用install命令来定义安装规则。例如:
install(TARGETS myapp DESTINATION bin)
install(FILES myheader.h DESTINATION include)
install(DIRECTORY mydir DESTINATION share/myapp)
这样,当我们使用make install命令时,构建生成的myapp可执行文件将被安装到bin目录下,myheader.h头文件将被安装到include目录下,而mydir目录及其下的文件将被安装到share/myapp目录下。
相关文章:
CMakeLists.txt:打印find_package变量;判断库文件路径设定是否正确;install文件设置
CMake打印find_package变量;install文件设置 打印find_package找到的各种变量判断库文件是否被找到install文件设置install详细说明 打印find_package找到的各种变量 目的:find_package后,想使用找到的include/lib文件夹。 find_package(Yo…...
Mysql 解决Invalid default value for ‘created_at‘
在mysql版本 8.0 和 5.* 之间数据互导的过程中,老是会出现各种错误,比如 这个created_at 一定要有一个默认值, 但是我加了 default null 还是会报错,于是对照了其他的DDL 发现,需要再加 null default null 才行&#…...
Linux【安全 01】云服务器主机安全加固(修改SSHD端口、禁用登陆失败的IP地址、使用密钥登录)
云服务器主机安全加固 1.SSH登录尝试的系统日志信息2.安全加固方法2.1 修改SSHD端口2.2 禁用登陆失败的IP地址2.3 使用密钥登录 3.总结 1.SSH登录尝试的系统日志信息 Last failed login: Sat Oct 7 14:10:39 CST 2023 from xxx.xx.xx.xxx on ssh:notty There were 10 failed …...
nginx的n种用法(nginx安装+正向代理+反向代理+透明代理+负载均衡+静态服务器)
nginx的安装 一、安装依赖 # 一键安装四个依赖 yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel二、安装nginx yum install nginx三、检查是否安装成功 nginx -v四、启动/停止nginx /etc/init.d/nginx start /etc/init.d/nginx stop五、编辑配置文件…...
lvm 扩容根分区失败记录
lvm 扩容根分区失败记录 1、问题描述2、错误描述3、解决方法重启系统进入grub界面,选择kernel 2.x 启动系统。然后同样的resize2fs命令扩容成功。 1、问题描述 根分区不足。 系统有2个内核版本,一个是kernel 2.x,另一个是kernel 4.x。 这次l…...
【机器学习】聚类(一):原型聚类:K-means聚类
文章目录 一、实验介绍1. 算法流程2. 算法解释3. 算法特点4. 应用场景5. 注意事项 二、实验环境1. 配置虚拟环境2. 库版本介绍 三、实验内容0. 导入必要的库1. Kmeans类a. 构造函数b. 闵可夫斯基距离c. 初始化簇心d. K-means聚类e. 聚类结果可视化 2. 辅助函数3. 主函数a. 命令…...
2824. 统计和小于目标的下标对数目 --力扣 --JAVA
题目 给你一个下标从 0 开始长度为 n 的整数数组 nums 和一个整数 target ,请你返回满足 0 < i < j < n 且 nums[i] nums[j] < target 的下标对 (i, j) 的数目。 解题思路 对数组进行排序,可以利用List自带的sort函数传递比较规则(代码中的…...
github上不去
想要网上找代码发现github上不去了 发现之前的fastgit也用不了了 搜了很多地方终于找到了 记录保存一下 fastgithub最新下载 选择第二个下载解压就行 使用成功!...
图像处理Scharr 算子
Scharr算子是用于图像边缘检测的一种算子,它类似于Sobel算子,但是对边缘的响应更加强烈。它可以用来检测图像中的边缘、轮廓等特征。 原理: Scharr算子是一种卷积核(也称为卷积模板),用于计算图像的梯度。…...
JAVA 面向对象编程
一. 类与对象 1.1 定义类 :类是由数据成员和成员方法组成的一个程序单元。数据成员表示类的属性,成员方法表示类的行为。 定义类的语法格式 : class 类名{数据类型 数据成员名;...public 返回值类型 方法名(参数 2, 参数 2 ...){// 方法体[return 表达…...
第十六章 解读深度学习中Batch Size、Iterations和Epochs(工具)
训练网络之前有很多参数要设置,不了解各个参数的含义就没法合理地设置参数值,训练效果也会因此大受影响。本篇博客记录一下网络训练里的Batch Size、Iterations和Epochs怎么理解。 一、引言 首先要了解一下为什么会出现Batch Size这个概念。深度学习算…...
基于UI交互意图理解的异常检测方法
美团到店平台技术部/质量工程部与复旦大学周扬帆教授团队开展了科研合作,基于业务实际场景,自主研发了多模态UI交互意图识别模型以及配套的UI交互框架。 本文从大前端质量保障领域的痛点出发,介绍了UI交互意图识别的方法设计与实现。基于UI交…...
ArgoWorkflow教程(一)---DevOps 另一选择?云原生 CICD: ArgoWorkflow 初体验
来自:探索云原生 https://www.lixueduan.com 原文:https://www.lixueduan.com/posts/devops/argo-workflow/01-deploy-argo-workflows/ 本文主要记录了如何在 k8s 上快速部署云原生的工作流引擎 ArgoWorkflow。 ArgoWorkflow 是什么 Argo Workflows 是…...
数据结构与算法编程题24
中序遍历非递归算法 #define _CRT_SECURE_NO_WARNINGS#include <iostream> using namespace std;typedef char ElemType; #define ERROR 0 #define OK 1 #define Maxsize 100 #define STR_SIZE 1024typedef struct BiTNode {ElemType data;BiTNode* lchild, * rchild; }B…...
springsecurity6配置四
一、springsecurity自定义过滤url配置 package com.school.information.config;import lombok.Data; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component;import java.util.List;/*** 需要放行的…...
OpenCV简介及安装
前言 因为最近想做图像处理、人脸检测/识别之类的相关开发,所以就开始补OpenCV的相关知识,便开个专栏用于记录学习历程和在学习过程中遇到的一些值得注意的重点和坑。 学习过程基本上也是面向官方文档和Google。 简介 OpenCV(开源的计算机视觉库)是基于…...
Unity调用dll踩坑记
请用写一段代码,让unity无声无息的崩溃。 你说这怕是有点难哦,谁会这么不幸呢?不幸的是,我幸运的成为了那个不幸的人。 unity里面调用dll的方式是使用 DllImport ,比如有一个 Hello.dll,里面有一个 char* …...
Oracle 数据库基线安全加固操作
目录 账号管理、认证授权 ELK-Oracle-01-01-01 ELK-Oracle-01-01-02 ELK-Oracle-01-01-03 ELK-Oracle-01-01-04 ELK-Oracle-01-01-05 ELK-Oracle-01-01-06 ELK-Oracle-01-01-07 …...
安装最新版WebStorm来开发JavaScript应用程序
安装最新版WebStorm来开发JavaScript应用程序 Install the Latest Version of JetBrains WebStorm to Develop JavaScript Applications By JacksonML 2023-11-25 1. 系统要求 WebStorm是个跨平台集成开发环境(IDE)。按照JetBrains官网对WebStorm软件…...
python opencv 放射变换和图像缩放-实现图像平移旋转缩放
python opencv 放射变换和图像缩放-实现图像平移旋转缩放 我们实现这次实验主要用到cv2.resize和cv2.warpAffine cv2.warpAffine主要是传入一个图像矩阵,一个M矩阵,输出一个dst结果矩阵,计算公式如下: cv2.resize则主要使用fx&…...
Python:操作 Excel 折叠
💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 Python 操作 Excel 系列 读取单元格数据按行写入设置行高和列宽自动调整行高和列宽水平…...
对WWDC 2025 Keynote 内容的预测
借助我们以往对苹果公司发展路径的深入研究经验,以及大语言模型的分析能力,我们系统梳理了多年来苹果 WWDC 主题演讲的规律。在 WWDC 2025 即将揭幕之际,我们让 ChatGPT 对今年的 Keynote 内容进行了一个初步预测,聊作存档。等到明…...
Spring Boot面试题精选汇总
🤟致敬读者 🟩感谢阅读🟦笑口常开🟪生日快乐⬛早点睡觉 📘博主相关 🟧博主信息🟨博客首页🟫专栏推荐🟥活动信息 文章目录 Spring Boot面试题精选汇总⚙️ **一、核心概…...
【git】把本地更改提交远程新分支feature_g
创建并切换新分支 git checkout -b feature_g 添加并提交更改 git add . git commit -m “实现图片上传功能” 推送到远程 git push -u origin feature_g...
是否存在路径(FIFOBB算法)
题目描述 一个具有 n 个顶点e条边的无向图,该图顶点的编号依次为0到n-1且不存在顶点与自身相连的边。请使用FIFOBB算法编写程序,确定是否存在从顶点 source到顶点 destination的路径。 输入 第一行两个整数,分别表示n 和 e 的值(1…...
python报错No module named ‘tensorflow.keras‘
是由于不同版本的tensorflow下的keras所在的路径不同,结合所安装的tensorflow的目录结构修改from语句即可。 原语句: from tensorflow.keras.layers import Conv1D, MaxPooling1D, LSTM, Dense 修改后: from tensorflow.python.keras.lay…...
华为OD最新机试真题-数组组成的最小数字-OD统一考试(B卷)
题目描述 给定一个整型数组,请从该数组中选择3个元素 组成最小数字并输出 (如果数组长度小于3,则选择数组中所有元素来组成最小数字)。 输入描述 行用半角逗号分割的字符串记录的整型数组,0<数组长度<= 100,0<整数的取值范围<= 10000。 输出描述 由3个元素组成…...
JDK 17 序列化是怎么回事
如何序列化?其实很简单,就是根据每个类型,用工厂类调用。逐个完成。 没什么漂亮的代码,只有有效、稳定的代码。 代码中调用toJson toJson 代码 mapper.writeValueAsString ObjectMapper DefaultSerializerProvider 一堆实…...
Copilot for Xcode (iOS的 AI辅助编程)
Copilot for Xcode 简介Copilot下载与安装 体验环境要求下载最新的安装包安装登录系统权限设置 AI辅助编程生成注释代码补全简单需求代码生成辅助编程行间代码生成注释联想 代码生成 总结 简介 尝试使用了Copilot,它能根据上下文补全代码,快速生成常用…...
【题解-洛谷】P10480 可达性统计
题目:P10480 可达性统计 题目描述 给定一张 N N N 个点 M M M 条边的有向无环图,分别统计从每个点出发能够到达的点的数量。 输入格式 第一行两个整数 N , M N,M N,M,接下来 M M M 行每行两个整数 x , y x,y x,y,表示从 …...
