在CMake中进行宏定义的几种方式

news/2025/3/16 6:25:38/

在CMake中进行宏定义有几种方式,具体取决于你想要定义的宏的作用范围。以下是一些常见的方式:

  1. 使用add_definitions命令: add_definitions命令可以全局添加编译器选项,包括宏定义。这样定义的宏将在整个项目中的所有源文件中可见。

    add_definitions(-DMY_MACRO)
    

    这将在编译时等同于在源代码中添加#define MY_MACRO
    注意 宏定义 只存在于源代码中,头文件是不包含的

  2. 在目标级别使用target_compile_definitions 如果你只想为特定的目标(比如可执行文件或库)定义宏,可以使用target_compile_definitions

    add_executable(my_executable main.cpp)
    target_compile_definitions(my_executable PRIVATE MY_MACRO)
    

    这将只在my_executable这个目标的编译过程中定义MY_MACRO

  3. 在源文件中使用add_compile_definitions 如果你只想在特定的源文件中定义宏,可以使用add_compile_definitions

    add_executable(my_executable main.cpp)
    target_sources(my_executable PRIVATE my_source.cpp)
    target_compile_definitions(my_executable PRIVATE MY_MACRO)
    

    这将只在my_source.cpp这个文件的编译过程中定义MY_MACRO

  4. 通过configure_file生成配置文件: 如果你想为源代码提供一些配置参数,可以使用configure_file生成一个配置文件,然后在代码中使用预定义的宏。

    configure_file(config.h.in config.h)
    

    config.h.in中,你可以定义宏,然后在源代码中包含生成的config.h文件。

这些是一些常见的CMake中进行宏定义的方式。选择哪种方式取决于你的需求以及宏定义的作用范围。


http://www.ppmy.cn/news/1200125.html

相关文章

Makefile初识

目录 0.前期准备0.1、程序编译链接: 1.Makefile基础1.1、认识Makefile1.2、Makefile定义模式:(1) 定义模式:(2) 执行Makefile: 1.3、Makefile的变量(1) 变量定义:(2) **变量的赋值符**:(3) 自动化变量 1.4 伪目标1.5 文…

数据结构 编程1年新手视角的平衡二叉树AVL从C与C++实现③

对应地,我们可以将insert函数中省略的操作补上 if(getBalance(node)2){ if(getBalance(node->left)1){ noderightRotate(node); //对应LL型 } else if(getBalance(node->left)-1{ node->left leftRotate(node->left); //对应LR型 noderightRotate(n…

2023年辽宁省数学建模竞赛A题铁路车站的安全标线

2023年辽宁省数学建模竞赛 A题 铁路车站的安全标线 原题再现: 在火车站或地铁站台上,离站台边缘 1 米左右的地方都画有一条黄线(或白线),这是为什么呢?   这条线称为安全线(业内称之为安全标线),人们在候车时必须站在安全线以…

【大数据】常见的数据抽取方法

常见的数据抽取方法 1.基于查询式的数据抽取1.1 触发器方式(又称快照式)1.2 增量字段方式1.3 时间戳方式1.4 全表删除插入方式 2.基于日志的数据抽取 数据抽取 是指从源数据源系统抽取需要的数据。实际应用中,数据源较多采用的是关系数据库。…

Java面试突击大纲

1 面向对象特性OOP 构造器 封装 继承 多态 抽象类 接口 2 高级应用 异常处理 IO流 多线程 集合 反射机制 注解 3 MySQL基础 约束 索引 优化 4 JDBC(不重要) 手动获取数据库连接 Statement完成CRUD操作 PreparedSatement完成CRUD操作…

SpringBoot整合定时任务遇到的多实例问题

唠嗑部分 是这样,前几日完善了定时任务的日志记录,今日切换了服务器,多部署了一个节点,使用nginx负载均衡,但是查看日志却发现了如下情况 那糟糕了,传说中的多实例问题出现了,今天我们就来聊聊…

torch.cumprod实现累乘计算

cumprod取自“cumulative product”的缩写,即“累计乘法”。 数学公式为: y i x 1 x 2 x 3 . . . x i y_ix_1\times{x_2}\times{x_3}\times{...}\times{x_i} yi​x1​x2​x3​...xi​ 官方链接:torch.cumprod 用法: impo…

Qt::WindowFlags

Qt::WindowFlags 文章目录 Qt::WindowFlags摘要窗口&部件Qt::WindowFlags&WindowType窗口类型窗口提示 关键字: Qt、 Qt::WindowFlags、 Qt::WindowType、 关键字4、 关键字5 摘要 今天在公司解决自己的Bugs的时候,发现一个以前可以用的功…