在 Linux 下用 C++ 做跨平台编译,通常目标是:
在 Linux 上编写/编译,生成可在 Windows / macOS / 其他架构上运行的程序。
下面按“常用程度 + 实战角度”给你一个清晰路线。
CMake 不直接编译,而是生成:
✅ 一次写 CMake,多平台编译
sudo apt install mingw-w64
CMake 工具链文件 toolchain-win64.cmake:
set(CMAKE_SYSTEM_NAME Windows)
set(CMAKE_C_COMPILER x86_64-w64-mingw32-gcc)
set(CMAKE_CXX_COMPILER x86_64-w64-mingw32-g++)
编译:
cmake -B build -DCMAKE_TOOLCHAIN_FILE=toolchain-win64.cmake
cmake --build build
✅ 生成 .exe
❌ 不支持 MSVC 特有 API
Linux 不能直接编译 macOS 可执行文件(苹果限制)
✅ 正确方式:
sudo apt install gcc-aarch64-linux-gnu
toolchain:
set(CMAKE_SYSTEM_NAME Linux)
set(CMAKE_C_COMPILER aarch64-linux-gnu-gcc)
set(CMAKE_CXX_COMPILER aarch64-linux-gnu-g++)
跨平台最大的坑是第三方库
pip install conan
[settings]
os=Windows
arch=x86_64
compiler=gcc
#include <windows.h>
#include <unistd.h>
#include <chrono>
#include <thread>
#include <filesystem>
#ifdef _WIN32
// Windows
#else
// Linux / macOS
#endif
FROM ubuntu:22.04
RUN apt install g++ cmake
matrix:
os: [ubuntu, windows, macos]
| 目标 | 推荐方案 |
|---|---|
| Windows exe | CMake + MinGW |
| 多平台库 | CMake + Conan |
| 企业项目 | CMake + CI |
| 新手 | CMake + GCC |
如果你愿意,可以告诉我:
我可以给你一个可直接用的模板。