CMake set_property设置全局变量属性

在 CMake 中,set_property(GLOBAL PROPERTY LD_SCRIPT "路径") 是用来设置全局属性的。在你的例子中,它设置了一个名为 LD_SCRIPT 的全局属性,并将其值设为 "${NUTTX_BOARD_DIR}/scripts/gnu-elf.ld"

具体解释:

  1. set_property(GLOBAL ...) : 这是 CMake 用来修改全局属性的命令,GLOBAL 表示这个属性在整个项目中都是全局可见的。
  2. PROPERTY LD_SCRIPT : 这里的 LD_SCRIPT 是你自定义的属性名称。CMake 没有预定义 LD_SCRIPT 这个属性,它是一个用户定义的属性。你可以用这个属性存储与链接脚本相关的信息。
  3. ${NUTTX_BOARD_DIR}/scripts/gnu-elf.ld : 这是一个路径,它指向了一个链接脚本文件(.ld 文件),这个文件通常会包含链接器的配置,用于控制编译时生成的可执行文件的内存布局等。

如何使用:

设置完这个属性后,你可以通过以下方式在 CMake 中引用这个属性的值:

  1. 获取属性

    你可以通过 get_property 命令来获取该属性的值。例如:

    shell 复制代码
    get_property(LD_SCRIPT_PATH GLOBAL PROPERTY LD_SCRIPT)
    message("LD Script Path: ${LD_SCRIPT_PATH}")
  2. 使用链接脚本

    假设你想在某个目标(target)的链接阶段使用这个链接脚本,你可以通过将它传递给链接器来实现。通常会结合 target_link_options 命令使用,例如:

    sh 复制代码
    get_property(LD_SCRIPT_PATH GLOBAL PROPERTY LD_SCRIPT)
    target_link_options(my_target PRIVATE "-T${LD_SCRIPT_PATH}")

    这里的 -T 选项是传递给 GNU 链接器(ld)的,用于指定一个自定义的链接脚本。

总结:

  • 你通过 set_property(GLOBAL PROPERTY LD_SCRIPT ...) 设置了一个全局属性,用于保存链接脚本的路径。
  • 然后,你可以通过 get_property 获取这个路径,并在目标的链接选项中使用 -T 选项将该脚本传递给链接器。

如果你有其他关于如何在项目中实际应用链接脚本的问题,欢迎继续讨论。

相关推荐
Molesidy8 天前
【Embedded System】【CMake】Windows下CMake+VSCode的开发环境搭建以及初步认识
ide·vscode·编辑器·cmake
fedorayang13 天前
precompilation-headers 以及在cmake中的实现
cmake
AAA小肥杨15 天前
cmake使用教程
c语言·c++·cmake
辰尘_星启15 天前
『CMake』关于使用CMake构建项目时的现代/传统指令
c++·架构·系统·cmake·项目·构建
安全二次方security²17 天前
TF-A CMake构建系统
编译·cmake·atf·tf-a·arm安全架构·构建系统
玩转C语言和数据结构19 天前
CMake下载和安装图解(附安装包,适合新手)
cmake·cmake下载·cmake安装·cmake 下载·cmake 安装·安装cmake·cmake下载安装
周之鸥25 天前
Qt 项目国际化从零到一:用 Qt Linguist 实现多语言动态切换(含源码与踩坑指南)
qt·i18n·cmake·qmake·linguist·lupdate·lrelease
老黄编程1 个月前
ros2 中 CMakeLists.txt 的 ament_package 有什么用?有什么使用约束?必须放置尾部吗?
ros·cmake
澄澈i1 个月前
CMake学习篇[3]---CMake进阶+嵌套CMakeLists+多层级关系
c++·学习·cmake
一只小bit1 个月前
CMake 入门实战手册:从理解原理开始,打造高效 C/C++ 开发流程
c语言·开发语言·c++·cmake