当前位置: 首页 > 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目录下。

相关文章:

  • Ps:裁剪工具 - 裁剪预设的应用
  • 深入理解C语言指针基础概念:定义、内存地址与声明初始化
  • 2023年【制冷与空调设备安装修理】考试报名及制冷与空调设备安装修理考试资料
  • 2023APMCM亚太杯数学建模选题建议及初步思路
  • Android: ListView + ArrayAdapter 简单应用
  • 任意文件下载漏洞(CVE-2021-44983)
  • Java WebSocket框架
  • WPS或Excel查找A列中有B列没有的值
  • redis运维(十八)pipeline
  • 二维数值型数组例题
  • 【黑马甄选离线数仓day04_维度域开发】
  • jQuery 第十一章(表单验证插件推荐)
  • MySQL与PostgreSQL 的一些SQL
  • 一文读懂如何安全地存储密码
  • Docker的项目资源参考
  • [译] 理解数组在 PHP 内部的实现(给PHP开发者的PHP源码-第四部分)
  • 4个实用的微服务测试策略
  • Django 博客开发教程 8 - 博客文章详情页
  • django开发-定时任务的使用
  • es6(二):字符串的扩展
  • Linux后台研发超实用命令总结
  • quasar-framework cnodejs社区
  • scrapy学习之路4(itemloder的使用)
  • Spring Boot MyBatis配置多种数据库
  • Vue2.0 实现互斥
  • vue的全局变量和全局拦截请求器
  • 道格拉斯-普克 抽稀算法 附javascript实现
  • 分类模型——Logistics Regression
  • 关于Flux,Vuex,Redux的思考
  • 基于web的全景—— Pannellum小试
  • 数据仓库的几种建模方法
  • 突破自己的技术思维
  • 微信支付JSAPI,实测!终极方案
  • AI算硅基生命吗,为什么?
  • ​queue --- 一个同步的队列类​
  • ​浅谈 Linux 中的 core dump 分析方法
  • # Redis 入门到精通(九)-- 主从复制(1)
  • (1)(1.9) MSP (version 4.2)
  • (c语言+数据结构链表)项目:贪吃蛇
  • (JS基础)String 类型
  • (Matlab)遗传算法优化的BP神经网络实现回归预测
  • (PADS学习)第二章:原理图绘制 第一部分
  • (Redis使用系列) Springboot 使用redis实现接口幂等性拦截 十一
  • (补充):java各种进制、原码、反码、补码和文本、图像、音频在计算机中的存储方式
  • (顶刊)一个基于分类代理模型的超多目标优化算法
  • (学习日记)2024.04.10:UCOSIII第三十八节:事件实验
  • (原创)Stanford Machine Learning (by Andrew NG) --- (week 9) Anomaly DetectionRecommender Systems...
  • (转)h264中avc和flv数据的解析
  • (转载)在C#用WM_COPYDATA消息来实现两个进程之间传递数据
  • ******之网络***——物理***
  • *Algs4-1.5.25随机网格的倍率测试-(未读懂题)
  • .NET CORE 3.1 集成JWT鉴权和授权2
  • .NET/C# 避免调试器不小心提前计算本应延迟计算的值
  • .NET企业级应用架构设计系列之技术选型
  • .php文件都打不开,打不开php文件怎么办