有没有大佬给我讲解一下msvc、mingw,gcc、g++,qmake、cmak
发布网友
发布时间:2024-10-03 15:17
我来回答
共1个回答
热心网友
时间:2天前
在学习编程过程中,经常遇到多种编译器和构建工具,如GCC、G++、Mingw、MSVC、CMake等。本文旨在梳理这些名词之间的关系,以助于理解和配置不同编程环境,并深入理解程序运行机制。
首先,我们通过一段Hello World示例,即hello.c文件,来介绍编译过程。在Linux环境下,通过GCC将高级语言翻译成机器语言,完成预编译、编译、汇编和链接的全过程。然而,使用集成开发环境如Visual Studio时,这些步骤通常被集成在一个构建过程中。
GCC/G++来自GNU计划,由Richard Stallman发起,旨在创建一个自由操作系统。Stallman是开源运动的先驱,其目标是实现自由、可复制、可修改和发布的软件。Linux操作系统就是GNU计划的一部分,由Linus Torvalds开发,最初仅包含1万行代码,后与GNU软件结合,成为一个完整的自由操作系统。
MinGW和MSVC则对应Windows平台的C/C++编译环境。MinGW提供一个可以生成本地Windows程序的集合,而MSVC是Microsoft的第三方C运行时库,集成于Visual Studio IDE中。选择两者之一即可满足Windows平台的C/C++开发需求。
LLVM的clang与之相关,是用于优化程序编译时间、链接时间、运行时间以及空闲时间的编译框架。它由美国UIUC大学的Chris Lattner博士主持开发,并被Apple等公司广泛采用。
在编译过程中,make和CMake扮演构建生成器的角色。make工具通过makefile文件来管理项目构建过程,当代码更改时,仅需重新执行make。然而,make在复杂项目管理上存在局限性。CMake则提供了一种更高层次的构建工具,通过CMakeList.txt文件指定构建过程,然后根据系统环境选择合适的构建生成器,最终调用系统编译器进行项目构建。
本文梳理了从GCC到MSVC再到CMake的编译与构建过程,希望有助于理解和配置不同编程环境。如有错误之处,欢迎指出。
有没有大佬给我讲解一下msvc、mingw,gcc、g++,qmake、cmak
GCC/G++来自GNU计划,由Richard Stallman发起,旨在创建一个自由操作系统。Stallman是开源运动的先驱,其目标是实现自由、可复制、可修改和发布的软件。Linux操作系统就是GNU计划的一部分,由Linus Torvalds开发,最初仅包含1万行代码,后与GNU软件结合,成为一个完整的自由操作系统。MinGW和MSVC则对应Windows平...
cmake:让mingw(gcc)生成MSVC可用的dll(.lib)---mark亲测有效
在用cmake生成Makefile时,设置GNUtoMS就可以解决这个问题。有两种途径:shell命令行方式 如下在命令行中-D定义一个为bool类型的CMAKE_GNUtoMS参数为ON,就指示在编译时对dll生成.lib的import library cmake %source_folder% -G “Eclipse CDT4 - MinGW Makefiles” -DCMAKE_GNUtoMS:BOOL=ON cmak-gu...