第2章:开发环境搭建
说实话,跨平台开发最让人头疼的,往往不是代码本身,而是环境配置。我见过太多人花了一周写代码,结果花了两周折腾编译环境。这一章,咱们就把这事儿彻底搞定。
2.1 Windows下安装MinGW-w64
Windows用户想用GCC,MinGW-w64是最靠谱的选择。我个人习惯用这个版本,因为它支持64位,而且更新比较及时。
安装步骤
- 访问MinGW-w64的官方下载页面(或者用MSYS2也行)
- 选择
x86_64-posix-seh版本 - 解压到
C:\mingw64 - 把
C:\mingw64\bin加到系统PATH里
pacman -S mingw-w64-x86_64-gcc
验证安装
gcc --version
g++ --version
gdb --version
能正常输出版本号,就说明装好了。嗯,这里要注意:如果提示找不到命令,八成是PATH没配对。
-static 参数,把库静态链接进去。
2.2 Linux下安装GCC
Linux下装GCC就简单多了。说白了,一行命令搞定。但不同发行版,包管理器不一样。
Debian/Ubuntu系列
sudo apt update
sudo apt install build-essential
sudo apt install gdb
build-essential 这个包会把GCC、G++、make这些基础工具一次性装好。我刚开始用Linux时,不知道有这个包,一个一个装,折腾了半天。
CentOS/RHEL/Fedora系列
sudo yum groupinstall "Development Tools"
sudo yum install gcc gcc-c++ gdb
或者用dnf(Fedora新版本):
sudo dnf groupinstall "Development Tools"
验证安装
gcc --version
g++ --version
make --version
2.3 macOS下安装Xcode Command Line Tools
macOS用户最省心。苹果把工具链打包好了,你只需要装个命令行工具就行。
安装方法
xcode-select --install
执行后,会弹出一个对话框,点「安装」就行。它会自动下载安装GCC(其实是Clang)、make、git等工具。
gcc --version 会看到显示的是Apple Clang。两者语法基本兼容,但有些GCC特有的扩展不能用。我建议在macOS上开发时,尽量写标准C代码,这样换到Linux上编译也不会出问题。
验证安装
gcc --version
clang --version
make --version
2.4 使用CMake管理项目
手动写Makefile太痛苦了,尤其是跨平台项目。CMake就是来解决这个问题的。你写一份CMakeLists.txt,它能在Windows、Linux、macOS上生成对应的构建文件。
安装CMake
| 平台 | 安装命令 |
|---|---|
| Windows | 下载安装包,或 choco install cmake |
| Ubuntu/Debian | sudo apt install cmake |
| CentOS/RHEL | sudo yum install cmake |
| macOS | brew install cmake |
一个简单的CMake项目
假设你的项目结构是这样的:
my_project/
├── CMakeLists.txt
├── src/
│ └── main.c
└── include/
└── utils.h
CMakeLists.txt的内容:
cmake_minimum_required(VERSION 3.10)
project(MyProject VERSION 1.0 LANGUAGES C)
# 设置C标准
set(CMAKE_C_STANDARD 11)
set(CMAKE_C_STANDARD_REQUIRED ON)
# 添加头文件路径
include_directories(include)
# 添加源文件
add_executable(my_app src/main.c)
编译项目
mkdir build
cd build
cmake ..
cmake --build .
为什么要在build目录里编译?你想想看,如果把编译产生的临时文件放在源码目录里,那得多乱。用build目录,想清理的话,直接删掉build文件夹就行。
cmake ..,它会生成Visual Studio的.sln文件;在Linux上跑,会生成Makefile;在macOS上跑,会生成Xcode项目或者Makefile。一份CMakeLists.txt,三平台通用。
常用CMake变量
| 变量名 | 说明 |
|---|---|
CMAKE_C_COMPILER |
指定C编译器路径 |
CMAKE_CXX_COMPILER |
指定C++编译器路径 |
CMAKE_BUILD_TYPE |
Debug/Release/RelWithDebInfo |
CMAKE_INSTALL_PREFIX |
安装路径 |
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)。这样会生成一个 compile_commands.json 文件,很多代码补全工具(比如clangd)都需要它。
知识体系总览
下面这张图,把本章的核心内容串起来了。你一看就明白,不同平台的环境搭建路径,以及CMake如何作为统一入口。
这张图你看懂了吗?说白了,CMake就是那个「翻译官」,把你的项目描述翻译成各个平台能理解的构建脚本。你只需要维护一份CMakeLists.txt,剩下的交给它。
set(CMAKE_C_COMPILER gcc)。记住,CMake虽然智能,但有时候你得告诉它该用哪个编译器。
好了,环境搭建就讲到这里。工具装好了,下一章咱们就开始写真正的跨平台代码了。