如何在Windows项目中便捷编译Linux版本?已含WIN32/Linux分支
便捷双平台编译方案
1. 用CMake统一构建流程
这是跨平台编译的标准解决方案,把项目的编译规则写到CMakeLists.txt里,一套配置适配Windows和Linux,不用维护两套项目文件。
- 核心操作:
- 在项目根目录创建
CMakeLists.txt,定义项目名称、源文件、编译宏、依赖库等(示例配置如下) - Windows下:打开Visual Studio,直接打开
CMakeLists.txt,VS会自动生成CMake项目,选择Windows平台编译即可 - Linux下:在终端进入项目目录,执行
cmake . && make,CMake会自动生成Makefile并编译,同时帮你定义好LINUX宏
- 在项目根目录创建
示例CMake配置片段:
cmake_minimum_required(VERSION 3.10) project(MyCrossPlatformApp) # 递归收集所有源文件(根据你的项目结构调整路径) file(GLOB_RECURSE APP_SOURCES "src/*.cpp" "include/*.h") add_executable(MyApp ${APP_SOURCES}) # 自动设置平台宏,匹配你代码里的#ifdef逻辑 if(WIN32) target_compile_definitions(MyApp PRIVATE WIN32) elseif(UNIX) target_compile_definitions(MyApp PRIVATE LINUX) endif() # 平台特定依赖(比如Windows下链接系统库) if(WIN32) target_link_libraries(MyApp PRIVATE user32.lib) endif()
2. 用WSL直接编译Windows下的代码
不用切换系统,在Windows上启用WSL(Windows子系统Linux),直接访问本地项目目录编译,完全不用复制文件。
- 操作步骤:
- 启用WSL:打开Windows设置 -> 应用 -> 可选功能 -> 添加功能,安装“适用于Linux的Windows子系统”,再在微软商店装个Ubuntu发行版
- 安装编译工具:打开Ubuntu终端,执行
sudo apt update && sudo apt install gcc g++ make - 编译代码:在终端里cd到你的Windows项目路径(比如
cd /mnt/c/Users/你的用户名/Projects/MyProject),然后用g++编译:
编译好的程序直接在WSL里运行即可,代码仍在原Windows文件夹,两边都能修改编译。g++ src/*.cpp -o MyApp -DLINUX
3. 用Visual Studio跨平台编译功能
如果习惯用VS开发,直接用VS的Linux开发能力,同一个IDE里切换Windows/Linux编译目标。
- 操作步骤:
- 打开VS安装器,勾选“使用C++的Linux开发”工作负载,安装完成后重启VS
- 打开你的Windows项目,在顶部的“解决方案平台”下拉菜单里选择“配置管理器”,添加Linux平台(可选WSL或远程Linux机器)
- 配置好连接后,直接切换到Linux平台编译,VS会自动处理宏定义(帮你加
-DLINUX)和编译流程,代码不用动,也不用复制文件
额外注意点
- 路径问题:代码里别硬编码Windows风格的反斜杠路径,尽量用相对路径,或者用宏定义适配(比如
#ifdef WIN32 #define PATH_SEP "\\" #else #define PATH_SEP "/" #endif) - 换行符:如果用git管理代码,设置
git config --global core.autocrlf true,避免Windows和Linux下换行符不一致导致的编译问题 - 依赖库:如果项目用到第三方库,尽量选跨平台版本,或者用CMake的
find_package自动查找平台对应的库
内容的提问来源于stack exchange,提问作者Dre_d777
相关产品推荐
相关产品推荐

