CMake实现target_link_libraries_with_definitions

target_link_libraries( … … …)

https://cmake.org/cmake/help/latest/command/target_link_libraries.html#target-link-libraries

target_link_libraries为target指定链接的库,有时候想要携带库本身的编译参数。保证看到的头文件是一致的。
可以使用方法:

    get_target_property(defs some_lib COMPILE_DEFINITIONS)target_compile_definitions(target PUBLIC ${defs})

为了方便使用,可以封装函数:

function(target_link_libraries_with_compile_definitions target)set(options)set(oneValueArgs LINK_VISIBILITY DEPEND_VISIBILITY EXPORT_VISIBILITY)set(multiValueArgs LIBRARIES)cmake_parse_arguments(ARG "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})target_link_libraries(${target} ${ARG_LINK_VISIBILITY} ${ARG_LIBRARIES})set(compile_definitions)foreach (library ${libraries})get_target_property(defs ${library} ${ARG_DEPEND_VISIBILITY})set(compile_definitions ${compile_definitions} ${defs})endforeach ()target_compile_definitions(${target} ${ARG_EXPORT_VISIBILITY} ${compile_definitions})
endfunction()function(target_link_libraries_with_definitions target)# param: visibilityset(visibility ${ARGV1})# param: librariesset(visibilities PUBLIC PRIVATE INTERFACE)if (${visibility} IN_LIST visibilities)list(SUBLIST ARGV 2 -1 libraries)else ()list(SUBLIST ARGV 1 -1 libraries)endif ()target_link_libraries_with_compile_definitions(${target}LINK_VISIBILITY PUBLICDEPEND_VISIBILITY COMPILE_DEFINITIONSEXPORT_VISIBILITY PUBLICLIBRARIES ${libraries})
endfunction()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/758275.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

VUE3实现一键复制功能

1.使用vueuse/core (安全策略的问题,非https网页下面不让你拷贝) vueuse/core是一个为 Vue.js 提供常用功能和实用工具函数的库。它是基于 Composition API,为开发者提供了一组易于使用和可复用的函数 http网页使用解决方法:解决方法! 2.使用插件 n…

账号+密码+图片验证码认证

账号密码图片验证码认证 实现步骤 实现账号密码认证,执行流程如下 第一步: 对于验证码服务工程的生成验证码图片的接口在网关处需要放行,否则页面无法获取生成的验证码图片 /**临时放行所有请求 /auth/**认证服务地址 /content/open/**内容管理公开访问文件接口 …

C语言——自定义类型——结构体(从零到一的跨越)

目录 前言 1.什么是结构体 2.结构体类型的声明 2.1结构体的声明 2.2结构体的创建和初始化 2.3结构成员访问操作符 2.3.1结构体成员直接访问 2.3.2结构体成员的间接访问 2.4结构体变量的重命名 2.5结构体的特殊声明 2.6结构的自引用 3.结构体内存对齐 3.1对齐规则 3…

JavaScript之ES5新特性

this function中的this——谁调用指向谁 1.注册在对象中的function里面的this var obj {a:10,fn(){console.log(this. a)}注:对象中fn(){}是fn:function(){}的简写 obj.fn()//10 注册在对象内的方法一定由对象调用,所以fn中的this执向obj 2.注册在全局作…

10:00面试,10:06就出来了,问的问题有点变态。。。

从小厂出来,没想到在另一家公司又寄了。 到这家公司开始上班,加班是每天必不可少的,看在钱给的比较多的份上,就不太计较了。没想到8月一纸通知,所有人不准加班,加班费不仅没有了,薪资还要降40%…

echart trigger 为 axis 的时候不显示 tooltip 解决办法

echart trigger 为 axis 的时候不显示 tooltip 解决办法 在项目 vitetsvue3 中使用 echart 显示了一个曲线图: 但当把图表的 trigger 设置成 axis 的时候,鼠标扫过并不显示具体的数值,如上图所示。 但 trigger item 的时候是正常的。 解决…

【virtio-networking 和 vhost-net 简介】

文章目录 Virtio 基本构建块Virtio spec 和 vhost 协议Vhost-net/virtio-net architectureVirtio-networking and OVS总结参考链接 Virtio 是作为虚拟机 (VM)访问简化device(如块设备和网络适配器)的 标准化开放接口而开发的。Virtio-net是一种虚拟以太…

【Linux】多线程概念 | POSIX线程库

文章目录 一、线程的概念1. 什么是线程Linux下并不存在真正的多线程,而是用进程模拟的!Linux没有真正意义上的线程相关的系统调用!原生线程库pthread 2. 线程和进程的联系和区别3. 线程的优点4. 线程的缺点5. 线程异常6. 线程用途 二、二级页…

PyTorch学习笔记之基础函数篇(七)

文章目录 5. 基本数学运算5.1 torch.add()函数5.2 torch.sub()函数5.3 torch.mul()函数5.4 torch.div() 函数5.5 torch.pow() 函数5.6 torch.sqrt()函数5.7 torch.exp()函数 5. 基本数学运算 5.1 torch.add()函数 torch.add() 是 PyTorch 中的一个函数,用于执行逐…

excel 破解 保护工作簿及保护工作表

excel 破解 保护工作簿及保护工作表 对于这种 保护工作簿及保护工作表 不知道密码时,可以使用以下方法破解 保护工作簿破解 打开受保存的excel 右键点击sheet名称 —> 查看代码 复制以下代码,粘贴到代码区域 Sub 工作簿密码破解() ActiveWorkbook.…

C++ —— 类和对象(终)

目录 1. 日期类的实现 1.1 前置 和 后置 重载 1.2 >> 和 << 的重载 2. const 成员 3. 取地址及const取地址操作符重载 4. 再谈构造函数 4.1 构造函数体赋值 4.2 初始化列表 4.3 隐式类型转换 4.4 explict 关键字 5. static 成员 5.1 概念 5.2 特性 …

conda 的基础操作

Conda 是一个开源的包管理系统和环境管理系统&#xff0c;用于安装多个版本的软件包及其依赖关系&#xff0c;并能够在它们之间轻松切换。以下是一些基本的 Conda 命令&#xff1a; 创建环境 创建一个新的 conda 环境&#xff1a; conda create --name myenv创建一个新的 conda…

【Mybatis面试题】Mybatis如何防止SQL注入?$#的区别是什么

1. 如何防止SQL注入&#xff1f; SQL注入&#xff1a;SQL命令插入到web表单提交或通过页面请求的查询字符串&#xff0c;最终达到欺骗服务器执行恶意的SQL指令。注入攻击的本质是把用户输入的数据当做代码执行。例如&#xff1a; 例如: 表单有两个用户需要填写的表单数据&…

【Web】浅聊Hessian异常toString姿势学习复现

目录 前言 利用关键 调用分析 如何控制第一个字节 EXP 前言 Hessian CVE-2021-43297&#xff0c;本质是字符串和对象拼接导致隐式触发了该对象的 toString 方法&#xff0c;触发toString方法便可生万物&#xff0c;而后打法无穷也&#xff01; 这个CVE针对的是Hessian2I…

Follow-Your-Click——点选图像任意区域对象使用短提示语即可生成视频

简介 “I2V”&#xff08;图像到视频生成&#xff09;旨在将静态图像转换为具有合理动作的动态视频剪辑&#xff0c;在电影制作、增强现实和自动广告等领域有广泛应用。然而&#xff0c;现有的I2V方法存在一些问题&#xff0c;例如缺乏对图像中需要移动的部分的精准控制&#…

机器学习模型—K means

文章目录 机器学习模型—K means聚类的目标k 均值原理k 均值 的实现手动实现Python 实现K 的确定 手肘法总结机器学习模型—K means K-Means 聚类是一种无监督机器学习算法,它将未标记的数据集分为不同的簇。本文旨在探讨 k 均值聚类的基本原理和工作原理以及实现。 无监督机…

【力扣】383.赎金信

题目描述 给你两个字符串&#xff1a;ransomNote 和 magazine &#xff0c;判断 ransomNote 能不能由 magazine 里面的字符构成。 如果可以&#xff0c;返回 true &#xff1b;否则返回 false 。 magazine 中的每个字符只能在 ransomNote 中使用一次。 示例 1&#xff1a; …

快速幂简介

0. 介绍 传统算 a b a^b ab需要 b − 1 b-1 b−1次&#xff0c;快速幂将 b b b分解成 2 2 2进制的形式简化为 l o g 2 ( b ) log_2(b) log2​(b)次 1. 实现 将 b b b化为2进制位的形式。 b ∑ i 0 n c i 2 i , c i ∈ { 0 , 1 } b\sum_{i0}^{n}c_i \times2^i, c_i \in \…

Chain of Verification-CoVe减少LLM中的幻觉现象

Chain-Of-Verification Reduces Hallucination In Large Language Models 在大型语言模型中&#xff0c;产生看似合理但实际上错误的事实信息&#xff0c;即幻觉&#xff0c;是一个未解决的问题。我们研究了语言模型在给出回答时进行深思以纠正错误的能力。我们开发了Chain-of…

深度解析 Android 系统属性

目录 Android系统属性 1.属性在哪里&#xff1f; 2.属性长什么样&#xff1f; 3.如何读写属性&#xff1a; 4.属性的作用 属性文件生成过程 如何添加系统属性 1.添加系统属性到 /system/build.prop 2.添加系统属性到 /vendor/build.prop 3.添加系统属性到 /product/b…