CMake命令:find_package、make instal、make --build .、CMAKE_PREFIX_PATH、add_compile_options、set_property-程序员宅基地

技术标签: CMAKE  CMake  

1、find_package

作用: 帮助查找工程依赖的包(lib、so)文件。

1.1、两种查找模式:

两种模式均为在指定路径下查找指定类型cmake文件来查找依赖的包,差异为两模式的查找路径不同

  • MODULE模式下
    CMake在 CMAKE_MODULE_PATH路径及CMake安装路径 下,通过查找名为Find<PackageName>.cmake的文件来查找包文件。

  • CONFIG模式下
    CMake在特定的 cmake变量(如CMAKE_PREFIX_PATH、CMAKE_FRAMEWORK_PATH)指定的路径及系统环境变量PATH指定的路径 下,通过查找名为<PackageName>Config.cmake或者<lower-case-package-name>-config.cmake的文件来查找包文件。

1.2、查找结果:

查找后,cmake定义<PackageName>_FOUND<PackageName>_INCLUDE_DIR<PackageName>_LIBRARIES等变量来保存包的查找状态。

1.3、用例:
FIND_PACKAGE(Qt6 6.3.1 COMPONENTS Widgets REQUIRED)

参考资料:cmake(7):find_package命令详解

2、控制台的make install指令与CmakeList中的install命令

2.1. install命令
  • 作用: 指定在用make install指令安装时运行的规则,可以用来安装目标二进制、动态库、静态库以及文件、目录、脚本等。本质是将对应文件复制到指定目录
  • 用例: 将include目录复制到${CMAKE_INSTALL_INCLUDEDIR}/abc/目录下
    install(FILES include/ DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/abc/")
    
2.2. make install指令
  • 作用: make install指令用于运行install命令指定的安装内容。

参考资料:【CMake】cmake的install指令

3、cmake --build .

参数解析:

–build : 指定项目二进制树所在的路径
. : 表示当前路径

作用: cmake --build .效果与make等价,但可以自动识别适配当前平台的生成器,无需手动指定采用mingw32-make还是Nmake,常用于跨平台脚本中。

注:其用于cmake ..命令之后。

参考资料:
1、请问怎么理解cmake --build . 这句话?
2、CMake 官方文档解释

4、CMAKE_PREFIX_PATH

作用: 用来指明软件/库安装路径前缀,以供find_package()find_program()find_library()find_file()find_path()命令搜索使用,这样就方便搜索可执行文件、头文件及库文件等。
用法:
CMAKE_PREFIX_PATH是一个分号分隔的路径列表:

  1. 用法一:
list(APPEND CMAKE_PREFIX_PATH "D:\Qt\6.3.1\mingw_64") # 安装路径前缀
  1. 用法二:
cmake -DCMAKE_PREFIX_PATH=D:\Qt\6.3.1\mingw_64

注: 添加了后,find_package()等命令会自动搜索安装路径下bin, lib, include等子目录

参考资料:
1、CMake | 将路径添加到 CMAKE_PREFIX_PATH
2、CMAKE_PREFIX_PATH官方文档

5、add_compile_options与CMAKE_CXX_FLAGS

作用: 都用来设置编译选项,差异为add_compile_options针对所有编译器(包括c和c++编译器),CMAKE_CXX_FLAGS只针对C++编译器
用法:

add_compile_options(-Wall -Wextra -pedantic -Werror)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall")

参考资料:
1、add_compile_options和CMAKE_CXX_FLAGS的区别

6、set_property和get_property

作用: 在指定域中设置/获取一个命名属性,具体见cmake命令之set_property和get_property

7、if/elseif/else

用法:

if(<condition>)
    <commands>
elseif(<condition>) # 可选,且可重复
    <commands>
else([condition]) # 可选
    <commands>
endif([condition])

注: elseendif后括号中的condition可写可不写,不作为判断条件,但若写只能与if中的一致。

参考资料:
1、Cmake中的条件判断if/elseif/else

8、configure_file

作用: 将一个文件拷贝到指定目录,并匹配文件中特定字段,用当前值修改其值,具体见:CMake官方文档

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_33726635/article/details/126301749

智能推荐

android腾讯崩溃报告库_com.tencent.bugly.crashreport.crashreport-程序员宅基地

文章浏览阅读525次。我们在开发过程中,经常会遇到程序闪退,但是Eclipse的Consle和Logcat又没有错误提示,或者是只有用的时间长了才会出现的偶然崩溃,这种就很难修复bug,也严重影响用户体验,用户分分钟卸载。腾讯的Bugly可以在app出现崩溃的时候上传错误信息,定位错误原因和语句,并且可以查看影响的用户数和程序Crash次数等等信息下面说一哈Eclipse+Android时Bugly的配置和使用..._com.tencent.bugly.crashreport.crashreport

zookeeper常用 java api_常见的zookeeper java api不包括-程序员宅基地

文章浏览阅读349次。zookeeper常用 java apizk原生api连接的创建是异步的,需要开发人员自行编码实现等待不支持自动超时重连,需要手动重连会话Watcher注册一次后失效,需要手动重新Watcher不支持递归创建多级目录zkClientsession会话超时重连解决Watcher反复注册简化API开发Apache Curator包含zC..._常见的zookeeper java api不包括

为什么叫依赖倒转,怎么个倒转法?_依赖倒转原则中,为什么叫倒转-程序员宅基地

文章浏览阅读574次,点赞5次,收藏3次。例如人吃巧克力:public interface IChocolates{}public class Oreo implements IChocolates {}public class Dove implements IChocolates {}public interface Person { void eat( IChocolates chocolates ); }上面的例..._依赖倒转原则中,为什么叫倒转

python3的安装(踩坑版,解决ssl问题,解决pip3无法使用的问题)_python3 安装ssl模块-程序员宅基地

文章浏览阅读7k次,点赞7次,收藏9次。目前python的使用范围越来越广了,某些技术框架都要依赖于python才能安装,今天忙里偷闲,把python3在linux上安装了一下,并顺便记录了一下其中的坑。过程稍微有点曲折,刚开始觉得python3很好装,官网下载tar包,yum安装相关依赖,在linux上解压、编译、安装就可以了;我就按照这个步骤开始走了cd /usr/local/python3./configuremake && make install然后建立软连接ln -s /usr/local/python3_python3 安装ssl模块

web防火墙的开通和部署_web防火墙怎么部署-程序员宅基地

文章浏览阅读693次。Web应用防火墙帮助您监控网站上的HTTP/HTTPS访问请求,并通过自定义过滤规则和启用Web攻击防护、安全合规等功能,帮助您部署网站访问控制。在使用WAF时,1、您需要开通WAF并将网站接入WAF,使网站的访问流量全部流转到WAF。下图显示了开通和接入WAF的简要流程,具体操作参见下文说明。2、WAF将按照您配置的过滤规则和启用的Web防护功能,检测并过滤收到的访问请求,只有满足规则条件..._web防火墙怎么部署

CentOS8 Hue _mysql.c:44:10: fatal error: my_config.h: No such file or directory-程序员宅基地

文章浏览阅读1.5k次。_mysql.c:44:10: 致命错误:my_config.h:没有那个文件或目录解决方法如下:I could not find any package for CentOS 8 with that file. However, I found the source file for 8.0.11 on MySQL’s official site.https://dev.mysql.com/doc/dev/mysql-server/8.0.11/my__config_8h_source.__mysql.c:44:10: fatal error: my_config.h: no such file or directory

随便推点

03-redhat-6.5升级python2.6到python2.7&安装psycopg2&连接postgresql-9.6.1(201-02-07)_redhat6.5 yum依赖python2.7-程序员宅基地

文章浏览阅读1.2k次。1参考文档2安装依赖包3升级python4安装pip5安装psycopg26连接查询插入测试1、参考文档http://ruter.sundaystart.net/2015/12/03/Update-python/2、安装依赖包[root@pg96 ~]# yum -y update[root@pg96 ~]# yum install epel-release[root@pg96 ~]#_redhat6.5 yum依赖python2.7

第四章课后作业——路由与网络层协议(需要修改)_以下关于icmp报文特点的描述中,错误的是? a. icmp报文封装在ip数据分组中 b.-程序员宅基地

文章浏览阅读1.7k次。一.单选题(共9题)1、以下关于ICMP报文特点的描述中,错误的是?A、ICMP报文分为两类:差错报告报文与信息报文B、不同的差错报告报文对应不同的代码值C、ICMP报文封装在IP数据分组中D、ICMP报头中有2B校验字段答案解析:ICMP报文前四字节:类型1字节、代码1字节、校验和2字节。所以D正确。2、假设路由器A和路由器B之间的链路开销为1,路由器A和路由器C之间的链路开销为3。A收到了从B发送过来的距离矢量,列出了与A,B,C,D之间的开销依次是(1,0,1,5)。这表示,例如,B和_以下关于icmp报文特点的描述中,错误的是? a. icmp报文封装在ip数据分组中 b.

1253: [蓝桥杯2015初赛]牌型种数_1253: [蓝桥杯2015初赛]牌型种数 内存限制:256 mb 时间限制:1 s 标准输入输出 -程序员宅基地

文章浏览阅读767次。题目描述小明被劫持到X赌城,被迫与其他3人玩牌。一副扑克牌(去掉大小王牌,共52张),均匀发给4个人,每个人13张。这时,小明脑子里突然冒出一个问题:如果不考虑花色,只考虑点数,也不考虑自己得到的牌的先后顺序自己手里能拿到的初始牌型组合一共有多少种呢?输出请输出该整数,不要输出任何多余的内容或说明文字。#include <stdio.h>int main(){ i..._1253: [蓝桥杯2015初赛]牌型种数 内存限制:256 mb 时间限制:1 s 标准输入输出 题

【GNN报告】赵越-图神经网络与异常检测_图神经网络 异常检测-程序员宅基地

文章浏览阅读3.8k次,点赞5次,收藏29次。卡内基梅隆大学赵越-图神经网络与异常检测_图神经网络 异常检测

presto时间转换、时间加减、时间差_presto日期加减-程序员宅基地

文章浏览阅读1.7w次,点赞3次,收藏29次。Hive中对应的日期操作见:https://blog.csdn.net/qq_21997625/article/details/111473520问题1:时间格式转换例子: 当前时间20200110 转化为2020-01-10--prestoselect (format_datetime(date_parse('20200110','%Y%m%d'),'yyyy-MM-dd')问题2: 时间的加减例子: 原时间为20200110 需先转化为标准日期形式再加减--presto._presto日期加减

电商数仓3.0 数仓搭建之DataGrip安装-程序员宅基地

文章浏览阅读307次。资料官网地址:https://www.jetbrains.com/datagrip/链接:https://pan.baidu.com/s/1-SguDZQM8miv-RXNWXpG7A提取码:axgeWelcome to DataGrip SetupChoose Install Location修改安装路径(next)Installation Options安装选项(next)Choose Start Menu Folder选择开始菜单的一个文件夹(next)Completin_电商数仓3.0 数仓搭建之datagrip安装

推荐文章

热门文章

相关标签