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&…...
接口测试中缓存处理策略
在接口测试中,缓存处理策略是一个关键环节,直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性,避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明: 一、缓存处理的核…...
业务系统对接大模型的基础方案:架构设计与关键步骤
业务系统对接大模型:架构设计与关键步骤 在当今数字化转型的浪潮中,大语言模型(LLM)已成为企业提升业务效率和创新能力的关键技术之一。将大模型集成到业务系统中,不仅可以优化用户体验,还能为业务决策提供…...
Java 语言特性(面试系列2)
一、SQL 基础 1. 复杂查询 (1)连接查询(JOIN) 内连接(INNER JOIN):返回两表匹配的记录。 SELECT e.name, d.dept_name FROM employees e INNER JOIN departments d ON e.dept_id d.dept_id; 左…...
云原生核心技术 (7/12): K8s 核心概念白话解读(上):Pod 和 Deployment 究竟是什么?
大家好,欢迎来到《云原生核心技术》系列的第七篇! 在上一篇,我们成功地使用 Minikube 或 kind 在自己的电脑上搭建起了一个迷你但功能完备的 Kubernetes 集群。现在,我们就像一个拥有了一块崭新数字土地的农场主,是时…...
C++:std::is_convertible
C++标志库中提供is_convertible,可以测试一种类型是否可以转换为另一只类型: template <class From, class To> struct is_convertible; 使用举例: #include <iostream> #include <string>using namespace std;struct A { }; struct B : A { };int main…...
以下是对华为 HarmonyOS NETX 5属性动画(ArkTS)文档的结构化整理,通过层级标题、表格和代码块提升可读性:
一、属性动画概述NETX 作用:实现组件通用属性的渐变过渡效果,提升用户体验。支持属性:width、height、backgroundColor、opacity、scale、rotate、translate等。注意事项: 布局类属性(如宽高)变化时&#…...
学习STC51单片机31(芯片为STC89C52RCRC)OLED显示屏1
每日一言 生活的美好,总是藏在那些你咬牙坚持的日子里。 硬件:OLED 以后要用到OLED的时候找到这个文件 OLED的设备地址 SSD1306"SSD" 是品牌缩写,"1306" 是产品编号。 驱动 OLED 屏幕的 IIC 总线数据传输格式 示意图 …...
微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据
微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据 Power Query 具有大量专门帮助您清理和准备数据以供分析的功能。 您将了解如何简化复杂模型、更改数据类型、重命名对象和透视数据。 您还将了解如何分析列,以便知晓哪些列包含有价值的数据,…...
Linux离线(zip方式)安装docker
目录 基础信息操作系统信息docker信息 安装实例安装步骤示例 遇到的问题问题1:修改默认工作路径启动失败问题2 找不到对应组 基础信息 操作系统信息 OS版本:CentOS 7 64位 内核版本:3.10.0 相关命令: uname -rcat /etc/os-rele…...
算法:模拟
1.替换所有的问号 1576. 替换所有的问号 - 力扣(LeetCode) 遍历字符串:通过外层循环逐一检查每个字符。遇到 ? 时处理: 内层循环遍历小写字母(a 到 z)。对每个字母检查是否满足: 与…...
