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

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变量&#xff1b;install文件设置 打印find_package找到的各种变量判断库文件是否被找到install文件设置install详细说明 打印find_package找到的各种变量 目的&#xff1a;find_package后&#xff0c;想使用找到的include/lib文件夹。 find_package(Yo…...

Mysql 解决Invalid default value for ‘created_at‘

在mysql版本 8.0 和 5.* 之间数据互导的过程中&#xff0c;老是会出现各种错误&#xff0c;比如 这个created_at 一定要有一个默认值&#xff0c; 但是我加了 default null 还是会报错&#xff0c;于是对照了其他的DDL 发现&#xff0c;需要再加 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界面&#xff0c;选择kernel 2.x 启动系统。然后同样的resize2fs命令扩容成功。 1、问题描述 根分区不足。 系统有2个内核版本&#xff0c;一个是kernel 2.x&#xff0c;另一个是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 &#xff0c;请你返回满足 0 < i < j < n 且 nums[i] nums[j] < target 的下标对 (i, j) 的数目。 解题思路 对数组进行排序&#xff0c;可以利用List自带的sort函数传递比较规则(代码中的…...

github上不去

想要网上找代码发现github上不去了 发现之前的fastgit也用不了了 搜了很多地方终于找到了 记录保存一下 fastgithub最新下载 选择第二个下载解压就行 使用成功&#xff01;...

图像处理Scharr 算子

Scharr算子是用于图像边缘检测的一种算子&#xff0c;它类似于Sobel算子&#xff0c;但是对边缘的响应更加强烈。它可以用来检测图像中的边缘、轮廓等特征。 原理&#xff1a; Scharr算子是一种卷积核&#xff08;也称为卷积模板&#xff09;&#xff0c;用于计算图像的梯度。…...

JAVA 面向对象编程

一. 类与对象 1.1 定义类 &#xff1a;类是由数据成员和成员方法组成的一个程序单元。数据成员表示类的属性&#xff0c;成员方法表示类的行为。 定义类的语法格式 : class 类名{数据类型 数据成员名;...public 返回值类型 方法名(参数 2, 参数 2 ...){// 方法体[return 表达…...

第十六章 解读深度学习中Batch Size、Iterations和Epochs(工具)

训练网络之前有很多参数要设置&#xff0c;不了解各个参数的含义就没法合理地设置参数值&#xff0c;训练效果也会因此大受影响。本篇博客记录一下网络训练里的Batch Size、Iterations和Epochs怎么理解。 一、引言 首先要了解一下为什么会出现Batch Size这个概念。深度学习算…...

基于UI交互意图理解的异常检测方法

美团到店平台技术部/质量工程部与复旦大学周扬帆教授团队开展了科研合作&#xff0c;基于业务实际场景&#xff0c;自主研发了多模态UI交互意图识别模型以及配套的UI交互框架。 本文从大前端质量保障领域的痛点出发&#xff0c;介绍了UI交互意图识别的方法设计与实现。基于UI交…...

ArgoWorkflow教程(一)---DevOps 另一选择?云原生 CICD: ArgoWorkflow 初体验

来自&#xff1a;探索云原生 https://www.lixueduan.com 原文&#xff1a;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简介及安装

前言 因为最近想做图像处理、人脸检测/识别之类的相关开发&#xff0c;所以就开始补OpenCV的相关知识&#xff0c;便开个专栏用于记录学习历程和在学习过程中遇到的一些值得注意的重点和坑。 学习过程基本上也是面向官方文档和Google。 简介 OpenCV(开源的计算机视觉库)是基于…...

Unity调用dll踩坑记

请用写一段代码&#xff0c;让unity无声无息的崩溃。 你说这怕是有点难哦&#xff0c;谁会这么不幸呢&#xff1f;不幸的是&#xff0c;我幸运的成为了那个不幸的人。 unity里面调用dll的方式是使用 DllImport &#xff0c;比如有一个 Hello.dll&#xff0c;里面有一个 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是个跨平台集成开发环境&#xff08;IDE&#xff09;。按照JetBrains官网对WebStorm软件…...

python opencv 放射变换和图像缩放-实现图像平移旋转缩放

python opencv 放射变换和图像缩放-实现图像平移旋转缩放 我们实现这次实验主要用到cv2.resize和cv2.warpAffine cv2.warpAffine主要是传入一个图像矩阵&#xff0c;一个M矩阵&#xff0c;输出一个dst结果矩阵&#xff0c;计算公式如下&#xff1a; cv2.resize则主要使用fx&…...

【Python】 -- 趣味代码 - 小恐龙游戏

文章目录 文章目录 00 小恐龙游戏程序设计框架代码结构和功能游戏流程总结01 小恐龙游戏程序设计02 百度网盘地址00 小恐龙游戏程序设计框架 这段代码是一个基于 Pygame 的简易跑酷游戏的完整实现,玩家控制一个角色(龙)躲避障碍物(仙人掌和乌鸦)。以下是代码的详细介绍:…...

K8S认证|CKS题库+答案| 11. AppArmor

目录 11. AppArmor 免费获取并激活 CKA_v1.31_模拟系统 题目 开始操作&#xff1a; 1&#xff09;、切换集群 2&#xff09;、切换节点 3&#xff09;、切换到 apparmor 的目录 4&#xff09;、执行 apparmor 策略模块 5&#xff09;、修改 pod 文件 6&#xff09;、…...

React Native 开发环境搭建(全平台详解)

React Native 开发环境搭建&#xff08;全平台详解&#xff09; 在开始使用 React Native 开发移动应用之前&#xff0c;正确设置开发环境是至关重要的一步。本文将为你提供一份全面的指南&#xff0c;涵盖 macOS 和 Windows 平台的配置步骤&#xff0c;如何在 Android 和 iOS…...

JavaScript 中的 ES|QL:利用 Apache Arrow 工具

作者&#xff1a;来自 Elastic Jeffrey Rengifo 学习如何将 ES|QL 与 JavaScript 的 Apache Arrow 客户端工具一起使用。 想获得 Elastic 认证吗&#xff1f;了解下一期 Elasticsearch Engineer 培训的时间吧&#xff01; Elasticsearch 拥有众多新功能&#xff0c;助你为自己…...

使用van-uploader 的UI组件,结合vue2如何实现图片上传组件的封装

以下是基于 vant-ui&#xff08;适配 Vue2 版本 &#xff09;实现截图中照片上传预览、删除功能&#xff0c;并封装成可复用组件的完整代码&#xff0c;包含样式和逻辑实现&#xff0c;可直接在 Vue2 项目中使用&#xff1a; 1. 封装的图片上传组件 ImageUploader.vue <te…...

Mac软件卸载指南,简单易懂!

刚和Adobe分手&#xff0c;它却总在Library里给你写"回忆录"&#xff1f;卸载的Final Cut Pro像电子幽灵般阴魂不散&#xff1f;总是会有残留文件&#xff0c;别慌&#xff01;这份Mac软件卸载指南&#xff0c;将用最硬核的方式教你"数字分手术"&#xff0…...

【服务器压力测试】本地PC电脑作为服务器运行时出现卡顿和资源紧张(Windows/Linux)

要让本地PC电脑作为服务器运行时出现卡顿和资源紧张的情况&#xff0c;可以通过以下几种方式模拟或触发&#xff1a; 1. 增加CPU负载 运行大量计算密集型任务&#xff0c;例如&#xff1a; 使用多线程循环执行复杂计算&#xff08;如数学运算、加密解密等&#xff09;。运行图…...

leetcodeSQL解题:3564. 季节性销售分析

leetcodeSQL解题&#xff1a;3564. 季节性销售分析 题目&#xff1a; 表&#xff1a;sales ---------------------- | Column Name | Type | ---------------------- | sale_id | int | | product_id | int | | sale_date | date | | quantity | int | | price | decimal | -…...

ardupilot 开发环境eclipse 中import 缺少C++

目录 文章目录 目录摘要1.修复过程摘要 本节主要解决ardupilot 开发环境eclipse 中import 缺少C++,无法导入ardupilot代码,会引起查看不方便的问题。如下图所示 1.修复过程 0.安装ubuntu 软件中自带的eclipse 1.打开eclipse—Help—install new software 2.在 Work with中…...

拉力测试cuda pytorch 把 4070显卡拉满

import torch import timedef stress_test_gpu(matrix_size16384, duration300):"""对GPU进行压力测试&#xff0c;通过持续的矩阵乘法来最大化GPU利用率参数:matrix_size: 矩阵维度大小&#xff0c;增大可提高计算复杂度duration: 测试持续时间&#xff08;秒&…...