关系梳理:
- 编译器(做菜的大厨):
- MSVC:微软家的“大厨”,专门在Windows厨房里做C/C++的菜(编译代码)。
- gcc/g++:开源界的“全能大厨”,C用gcc,C++用g++,常见于Linux厨房,但通过MinGW也能在Windows厨房做菜。
- 编译环境(厨房):
- MinGW:一个“Windows改装厨房”,让gcc/g++能在Windows环境下工作(提供GNU工具链的Windows移植)。
- 构建工具(写菜谱的人):
- qmake:Qt框架自带的“菜谱作者”,专门为Qt项目写菜谱(生成Makefile)。
- CMake:跨平台“智能菜谱作者”,能根据不同的厨房(Windows/Linux)自动生成对应的菜谱(如Makefile或VS工程)。
Java版比喻:
假设你是个Java开发者,现在要炒一盘“代码菜”:
- javac:相当于大厨(编译器),负责把Java源代码(生肉)炒成字节码(熟菜)。
- Maven/Gradle:相当于写菜谱的人(构建工具),告诉你什么时候放盐(依赖库),什么时候翻炒(编译顺序)。
- JDK版本:比如Oracle JDK和OpenJDK,就像不同的厨房(编译环境),虽然都能用javac炒菜,但锅具和调料(底层实现)可能略有不同。
白话总结:
- MSVC和MinGW:两种不同的“厨房”,一个专供Windows,一个让Linux大厨(gcc)也能在Windows做饭。
- gcc/g++:真正炒菜的“大厨”,看菜谱(构建工具)的指示干活。
- qmake/CMake:写菜谱的人,qmake专做Qt菜,CMake更万能,能适应所有厨房。
- Java版:用Maven点菜(pom.xml),告诉javac大厨怎么炒,而选Oracle还是OpenJDK就像选不同的厨房供应商。