[cmake命令笔记]target_compile_options

2023-10-30

编译basalt时碰到这个命令,basalt使用的第三方库pangolin老是报错:

CMake Error at thirdparty/CMakeLists.txt:67 (target_compile_options):
  Cannot specify compile options for target "pangolin" which is not built by
  this project.


CMake Error at thirdparty/CMakeLists.txt:118 (get_target_property):
  get_target_property() called with non-existent target "pangolin".


CMake Error at thirdparty/CMakeLists.txt:134 (get_target_property):
  get_target_property() called with non-existent target "pangolin".


CMake Error at thirdparty/CMakeLists.txt:142 (set_target_properties):
  set_target_properties Can not find target to add properties to: pangolin

但是这和这个命令并没有什么关系,这个错误貌似是因为我在下载第三方库的时候,不是使用的git clone --recursive,而是手动下载的第三方库到thirdparty目录下,因此可能没有感知到pangolin的存在,然后我在basalt项目根目录下使用git submodule init和git submodule update,问题愉快地解决了。

这里记录target_compile_options命令的用法

cmake原始文档地址
这个命令是为某个需要编译的目标增加编译选项,比如在前面添加的add_executable()或者add_library(),这两个命令表示你要编译一个可执行文件或者一个库,这就是编译目标(target)。
命令的参数选项如下:

target_compile_options(<target> [BEFORE]
  <INTERFACE|PUBLIC|PRIVATE> [items1...]
  [<INTERFACE|PUBLIC|PRIVATE> [items2...] ...])

target_compile_options会增加选项(options)到COMPILE_OPTIONS或者INTERFACE_COMPILE_OPOTIONS目标属性(也就是增加编译选项的意思)。这些选项会在编译给定目标(<target>)时使用,给定目标必须已经通过add_executable()或者add_library()这种命令添加到项目中,并且不能是别名目标。

下面看可选参数

如果指定了BEFORE,这个命令中的选项将放到所有属性之前(prepended)而不是之后(appended)。
INTERFACE, PUBLIC和PRIVATE关键词用于指定随后的参数的作用域。
PRIVATE和PUBLIC项将填充<target>COMPILE_OPTIONS属性。
PUBLIC和INTERFACE项将填充<target>INTERFACE_COMPILE_OPTIONS属性。
随后的参数就是指定的编译选项。
编译选项就是CMAKE调用编译器时的编译参数,每个编译器都有一些编译参数,有的是共通的,有的是编译器相关的,其实我认为所有的构建工具,编译工具,最终都是为了得到一个编译器命令行,这个命令行的执行命令是编译器的编译程序,命令参数就是这些编译参数。使用VisualStudio的同学可以查看属性配置-C/C+±命令行,里面就是VS的编译参数。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

[cmake命令笔记]target_compile_options 的相关文章

随机推荐

  • DDR中的一些知识点说明(ODT,ZQ校准,OCT,TDQS)

    ODT On DieTermination 片内终结 ODT 也是 DDR2 相对于 DDR1 的关键技术突破 所谓的终结 端接 就是让信号被电路的终端吸 收掉 而不会在电路上形成反射 造成对后面信号的影响 顾名思义 ODT 就是将端接电阻
  • 翻转链表

    前言 反转链表是程序员必备的基本素养 经常在面试 笔试的过程中出现 一直觉得反转链表实现代码不是很好理解 决定搬leetcode那道经典反转链表题出来 用十多张图去解析它 希望加深大家对链表反转的理解 谢谢阅读 leetcode的反转链表原
  • 添加SearchView控件时飘红的问题

    写代码的时候遇到一个问题 就是在layout的xml文件里添加SearchView控件时 xml代码飘红 像这样 点出红色小灯泡 系统建议我 这两个dependencies我都添加上了 但是无效 还是只能选择带包名的控件 经过一番排查 发现
  • 麒麟系统安装打印机共享_银河麒麟 惠普打印机驱动怎么安装

    银河麒麟 惠普打印机驱动怎么安装 相信很多小伙伴在日常办公中都会用到打印机 如果我们想要在电脑中安装打印驱动该怎么做呢 方法很简单 下面小编就来为大家介绍 具体如下 1 首先 在电脑中下载打印机相对应的驱动程序 在打印机对应品牌的官网中都能
  • 微信小程序实战须知2:详解数据API所需网络配置域名、Https、备案、SSL

    网络通信 小程序请求数据API时比较头疼 不能用想当然方式进行学习 服务器域名 IP HTTPS 域名1 域名 Domain Name 又称网域 是由一串用点分隔的名字组成的Internet上某一台计算机或计算机组的名称 用于在数据传输时对
  • flutter 实现消息提醒弹窗

    现在做了类似QQ的消息样式 弹窗消失 就显示创建对象 弹窗不消失就用eventbus刷新数据 重置时间五秒消失 true可以显示 false不可以显示 当点击第一个tab时false 当聊天界面返回用户ID是上面ID返回false 当退出聊
  • 小女生的Linux技术~~~Linux面试题汇总答案~~

    一 填空题 1 在Linux系统中 以 文件 方式访问设备 2 Linux内核引导时 从文件 etc fstab 中读取要加载的文件系统 3 Linux文件系统中每个文件用 i节点 来标识 4 全部磁盘块由四个部分组成 分别为引导块 专用块
  • Webpack打包之坑 _ webpackChunkName【魔法注释】

    目录 事件起因 百度查阅 webpackChunkName 结束了 事件起因 蒽 起因是这样的 项目从最初的使用 vue cli 脚手架搭建了一个初始化空架子之后就开始写项目了 也就是在刚开始的一段时间里偶尔有过几次打包查看 那时候还是能够
  • 四:SVM

    硬间隔最大化SVM SVM 介绍 SVM转化为最优解问题 KKT KKT图解 KKT定理 KKT例子 求解SVM最优化问题 拉格朗日对偶 拉格朗日对偶例子 用拉格朗日对偶解决问题 KKT在SVM中的意义 测试 SVM 介绍 SVM是一种分类
  • [Leetcode] 2. 两数相加

    题目描述 给定两个非空链表来表示两个非负整数 位数按照逆序方式存储 它们的每个节点只存储单个数字 将两数相加返回一个新的链表 你可以假设除了数字 0 之外 这两个数字都不会以零开头 示例 输入 2 gt 4 gt 3 5 gt 6 gt 4
  • 在 Linux 中配置 IPv4 和 IPv6 地址详解

    概要 IPv4和IPv6是Internet上常用的两种IP地址协议 在Linux系统中 您可以通过配置网络接口来设置IPv4和IPv6地址 本文将详细介绍如何在Linux中配置IPv4和IPv6地址 步骤 1 确定网络接口 在开始配置IP地
  • 视频监控安防平台-国标28181(GB28181)平台通过http请求获取rtsp地址再通过rtsp请求视频(HTTP服务转GB28181)

    视频监控安防平台 国标28181 GB28181 平台通过http请求获取rtsp地址再通过rtsp请求视频 HTTP服务转GB28181 最近在整理一些小型平台的功能 由原来的GB28181 RTSP小型平台改造成http服务 rtsp服
  • (小白学java)Java 变量类型

    Java 变量类型 Java 局部变量 实例变量 类变量 静态变量 int a b c 声明三个int型整数 a b c int d 3 e 4 f 5 声明三个整数并赋予初值 byte z 22 声明并初始化 z String s run
  • UNIX中文件权限与目录权限

    如下是UNIX系统中目录权限和文件权限的含义 TABLE 1 UNIX DIRECTORY Permissions WHO WHAT THE PERMISSIONS ALLOW USER Read r The account owner c
  • 短信验证功能、邮箱验证功能

    发送短信 需要借助第三方平台来发送短信 如阿里云 云通讯 对python3不友好 腾讯云 在这里用的是腾讯云来作为示例 腾讯云中短信准备工作 1 腾讯云官网注册 实名认证 登录 不废话 跳过 2 点击页面右上角 控制台 3 点击导航栏的云产
  • 初识直方图均衡化

    各位大家好 我是灿视 今天是一篇传统图像处理 直方图均衡 直方图均衡化 可以对在不同的光线条件下拍摄不同的图片进行均衡化处理 使得这些图片具有大致相同的光照条件 因此 我们可以用在训练模型之前 对图像进行对预处理 直方图均衡 1 直方图与对
  • OpenCV绘制透明底的图片,简单易懂讲解alpha通道怎么用

    今天忽然想做抠图和图形绘制 那这里就涉及到一个透明底的问题 OpenCV是很强大的 但是网上大多教程并没有讲清楚 alpha 通道的参数怎么设置 首先我们来看最简单的非 alpha 通道代码 import numpy as np impor
  • 快速开始 PieCloudDB Database:数据实例演示

    新一代云原生虚拟数仓 PieCloudDB 云上云 版 Cloud on Cloud 已于 2023 年 3 月14日重磅发布 本篇博客将从导入数据 结合虚拟电商销售数据等实例 详细展示查询计算和查询历史等功能 引导您快速了解和上 PieC
  • redis实战篇之导入黑马点评项目

    1 搭建黑马点评项目 链接 https pan baidu com s 1Q0AAlb4jM 5Fc0H RYUX A pwd 6666 提取码 6666 1 1 首先 导入SQL文件 其中的表有 tb user 用户表 tb user i
  • [cmake命令笔记]target_compile_options

    编译basalt时碰到这个命令 basalt使用的第三方库pangolin老是报错 CMake Error at thirdparty CMakeLists txt 67 target compile options Cannot spec