CMakeLists.txt关键字查漏补缺

devtools/2024/10/11 0:08:09/
  1. target_link_libraries
    用于指定目标(如可执行文件或库)要链接的库
cmake_minimum_required(VERSION 3.10)# 设置项目名称
project(my_project)# 添加可执行文件
add_executable(my_executable main.cpp)# 链接外部库
target_link_libraries(my_executable mylib)
  1. target_compile_definitions
    target_compile_definitions在CMake中用于为特定目标(如可执行文件或库)在编译时设置预处理器定义。
cmake_minimum_required(VERSION 3.10)# 设置项目名称
project(my_project)# 添加可执行文件
add_executable(my_executable main.cpp)# 设置预处理器定义
target_compile_definitions(my_executable PRIVATE DEBUG)

其中,main.cpp的首行用DEBUG进行判断

# if defined(DEBUG)
  1. set_target_properties
    set_target_properties 用于设置目标(如可执行文件或库)的属性。通过这个指令,你可以修改目标的多个属性,从而控制目标的构建过程。
  set_target_properties(vcap_npu_networkPROPERTIESIMPORTED_LOCATION${CMAKE_CURRENT_SOURCE_DIR}/../../jniLibs/${CMAKE_ANDROID_ARCH_ABI}/libvcap_npu_network.so)
  1. configure attribute of macro(宏)
#define VCAP_PUBLIC __attribute__((visibility("default")))

这段代码的作用是定义一个名为 VCAP_PUBLIC 的宏,并将它设置为 attribute((visibility(“default”)))。具体解释如下:

#define VCAP_PUBLIC attribute((visibility(“default”))):这行代码定义了一个宏 VCAP_PUBLIC,它实际上是一个编译器的属性设置,用来控制符号的可见性。

attribute((visibility(“default”))):这个属性告诉编译器,标记的符号(如类、函数或变量)在生成的共享库(shared library)中是默认可见的。即,这些符号可以被共享库之外的代码引用和使用。

  • #define VCAP_PRIVATE __attribute__((visibility("hidden")))则为不可见

常识

  1. 引用了一个headerfile后,即可使用其中声明并定义的类,
  2. 如果headerfile将类放在自定义的命名空间中,引用前要想namespace std一样加上命名空间名

http://www.ppmy.cn/devtools/123886.html

相关文章

FreeRTOS学习总结

背景:在裸机开发上,有时候我们需要等待某个信号或者需要延迟时,CPU的运算是白白浪费掉了的,CPU的利用率并不高,我们希望当一个函数在等待的时候,可以去执行其他内容,提高CPU的效率,同…

JVM系列(二) -类的加载过程介绍

一、背景介绍 我们知道 Java 是先通过编译器将.java类文件转成.class字节码文件,然后再通过虚拟机将.class字节码文件加载到内存中来实现应用程序的运行。 那么虚拟机是什么时候加载class文件?如何加载class文件?class文件进入到虚拟机后发…

javascript学习笔记

参考链接:JavaScript 教程 | 菜鸟教程 一、javascript输出显示数据 window 对象 定义: window 对象代表浏览器窗口或标签页。它是 JavaScript 的全局对象,也是全局作用域的根。功能: 提供对浏览器窗口的控制,比如可以修改窗口大小、位置等…

第三章 RabbitMQ安装

目录 一、Mac RabbitMQ安装 1.1. 安装Homebrew 1.2. 安装RabbitMQ 1.3. 启动RabbitMQ服务 1.4. 访问RabbitMQ管理界面 1.5. 停止RabbitMQ 二、Linux RabbitMQ安装 2.1. 安装仓库和依赖包 2.2. 安装RabbitMQ 2.3. 启动RabbitMQ 2.4. 设置RabbitMQ服务开机自启 2.5. …

多线程-初阶(2)BlockingQueueThreadPoolExecutor

学习目标: 熟悉wait和notify的线程休眠和启动 熟悉多线程的基本案例 1.单例模式的两种设置模式:懒汉模式和饿汉模式 2.阻塞队列(生产者消费者模型) 3.线程池 4.定时器 1.wait和notify 由于线程之间是抢占式执⾏的, 因此线程之间执⾏的先后顺序难以预知. 但是…

4.STM32-中断

STM32-中断 需求:红灯每两秒进行闪烁,按键key1控制绿灯亮灭 简单的程序代码无法满足要求 如何让STM32既能执行HAL_DELAY这种耗时的任务,同时又能快速响应按键按下这种突发情况呢 设置中断步骤 1.接入中断 将KEY1输入模式由原先的GPIO_In…

实验 | 使用本地大模型从论文PDF中提取结构化信息

非结构文本、图片、视频等数据是待挖掘的数据矿藏, 在经管、社科等研究领域中谁拥有了_从非结构提取结构化信息的能力_,谁就拥有科研上的数据优势。正则表达式是一种强大的文档解析工具,但它们常常难以应对现实世界文档的复杂性和多变性。而随…

对于JS脚本加标签功能的一些小理解

在JS中加标签,最主要的应用场景就是结合循环代码使用。用标签标识循环或者代码块,以便使用break 和 continue语句来结束循环。个人觉得标签加循环的本质作用是为了增加性能,减少运行代码行,以便提速。示例如下: 打印输…