路径相关
CMAKE_SOURCE_DIR
最顶层的CMakeLists.txt文件所在的目录
CMAKE_CURRENT_SOURCE_DIR
当前CMakeLists.txt所在的绝对路径的目录
EXECUTABLE_OUTPUT_PATH
指定可执行文件存放的路径
LIBRAR...
阅读更多
cmake构建流程
cmake工作的三个阶段
配置
生成
构建
生成项目构建系统
基本用法:
-S:指定源码树的路径
-B:指定生成的构建系统的目录
-G:执行生成器
cmake -S <path-to-source> -B <path-to-build&...
阅读更多
编译选项
GCC 13.3 命令汇总
路径选项
选项
解释
-I<dir>
指定额外的头文件搜索路径
-L<dir>
指定额外的库文件搜索路径...
阅读更多
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...
阅读更多