cmake 2:内置变量

路径相关 CMAKE_SOURCE_DIR 最顶层的CMakeLists.txt文件所在的目录 CMAKE_CURRENT_SOURCE_DIR 当前CMakeLists.txt所在的绝对路径的目录 EXECUTABLE_OUTPUT_PATH 指定可执行文件存放的路径 LIBRAR...

阅读更多

cmake 1:命令用法

cmake构建流程 cmake工作的三个阶段 配置 生成 构建 生成项目构建系统 基本用法: -S:指定源码树的路径 -B:指定生成的构建系统的目录 -G:执行生成器 cmake -S <path-to-source> -B <path-to-build&...

阅读更多

GCC编译、链接选项

编译选项 GCC 13.3 命令汇总 路径选项 选项 解释 -I<dir> 指定额外的头文件搜索路径 -L<dir> 指定额外的库文件搜索路径...

阅读更多

GNU简介

GNU(GNU’s Not Unix!)是一个由理查德·斯托曼(Richard Stallman)于1983年发起的自由软件项目,旨在创建一个与Unix兼容的操作系统,但完全不含任何Unix代码。GNU项目的目标是开发一个完整的操作系统,但最初缺乏一个可用的内核。直到1991年林纳斯·托瓦兹(Linus Torv...

阅读更多

字节对齐

字节对齐的作用 计算机中内存大小的基本单位是字节(byte),理论上来讲,可以从任意地址访问某种基本数据类型。 但是实际上,计算机并非逐字节大小读写内存,现代计算机系统通常以字(word)为单位来读取和写入内存。一个字的大小通常是4字节(32位cpu)或8字节(64位cpu)。 字节对齐的目的就是提高CPU...

阅读更多

内存布局

在C++中,内存分成4个区: 栈(Stack) 堆(Heap) 数据段(Data Segment) 代码段(Code Segment) 栈 栈区主要存储以下几类数据: 函数的局部变量。 函数参数。 函数返回地址。 编译器生成的额外信息(如变量对齐信息)。 栈区的特...

阅读更多

链接属性

翻译单元 编译器在编译代码时,只会去编译.cpp格式的源文件,并且预编译器会递归的把.cpp所有#include的头文件都拷贝到.cpp文件中去,之后对这个文件再进行编译,生成二进制的.obj文件,然后链接器会将所有的obj文件进行链接,生成最终可执行文件。 所以每一个.cpp文件都是一个翻译单元。 链接属性...

阅读更多

环境相关的预定义宏

操作系统 操作系统 预定义宏 Windows _WIN32, _WIN64 macOS __APPLE__, __MACH__ Linux...

阅读更多