windows下 CMake+MinGW 搭建C/C++編譯環境

CMake

下載地址:https://cmake.org/download/

下載zip版本“cmake-3.xx-win64-x64.zip”,下載完成解壓到指定目錄並添加bin所在目錄到環境變量。

在終端輸入“cmake --help”或 “cmake --version”查看是否配置成功。


MinGW-w64

下載地址:https://sourceforge.net/projects/mingw-w64/files/mingw-w64/mingw-w64-release/

推薦下載 離線版本“x86_64-posix-seh

將下載文件解壓到指定目錄並將bin目錄加入到環境變量, 例如c:\mingw64\bin

將mingw64\bin目錄下的“mingw32-make.exe”複製一份並改名爲 “make.exe”,就可以在終端直接使用 “make”指令而不必使用“mingw32-make”指令。

在終端輸入 “gcc -v”(或輸入“make -v”查看版本信息),看到輸出含以下信息,表示MinGW配置成功:

Thread model: posix
gcc version 8.1.0 (x86_64-posix-seh-rev0, Built by MinGW-W64 project)

 

編譯示例

新建src目錄,創建main.cc文件

#include <iostream>

int main(){
    std::cout<<"Hello World!"<<std::endl;
    system("pause");
    return 0;    
}

編寫CMakeLists.txt文件

cmake_minimum_required(VERSION 3.15)
project (HELLO)
set(SOURCE main.cc)
add_executable(${PROJECT_NAME} ${SOURCE})

(cmake中命令不區分大小寫,變量區分大小寫)

生成Makefile文件

mkdir build
cd build
cmake -G “MinGW Makefiles” ..

編譯

make

運行

HELLO.exe



 

gcc、make、Makefile、CMake 與 CMakeLists

1. gcc(GNU Compiler Collection)可以看成是GNU編譯器套件,可以編譯C、C++、Objective-C、Java等多種編程語言。
當程序中只有很少個原文件時,可以直接使用gcc進行編譯。但是當程序中包含很多個源文件時,使用gcc命令逐個文件編譯的工作量很大且容易出錯。
這時候就可以藉助make工具進行“批量”編譯和鏈接。


2. make本身不具有編譯和鏈接的功能,而是類似於一個智能的批處理工具,通過調用Makefile文件中用戶指定的命令進行編譯和鏈接。


3. Makefile文件中定義了一套調用gcc編譯源文件的命令。簡單工程的Makefile文件可以手動編寫,當工程比較大的時候手動編寫Makefile文件也很麻煩,並且Makefile中的指令是平臺相關的,換個平臺還需要再修改。
這時候就可以使用CMake工具自動生成Makefile文件。


4. CMake工具可以以更加簡單的方式自動生成Makefile文件,跨平臺時只需要告訴CMake目標平臺類型,就可以自動生成目標平臺可使用的Makefile文件。
CMake依賴(或根據)CMakeLists.txt文件自動生成Makefile。


5. CMakeLists.txt需要手動編寫。

 

CMake工具和CMakeLists.txt是一對好基友, make工具和Makefile是另一對好基友。
 

CMake要解決的問題是項目要在不同平臺不同編譯器下都可以依據一個統一的腳本(CMakeLists.txt)進行構建的問題。忽略不同平臺的差異,抽象成爲一個一致的環境。
make要解決的問題是在一個特定的平臺環境上依據當前平臺的腳本(Makefile),調用gcc(或其他編譯器)對源文件進行批量編譯鏈接的問題。

CMake是一個比make更高級的編譯配置工具,它可以根據不同平臺、不同的編譯器,生成相應的Makefile,達到一個編寫,多環境編譯的效果。


所以使用CMake編寫一個跨平臺的工程的基本流程是:

  • 1. 編寫代碼源文件
  • 2. 編寫CMakeLists.txt(依據CMake的語法規格和格式)
  • 3. 使用CMake工具根據CMakeLists.txt生成Makefile
  • 4. 使用make工具根據Makefile,調用gcc編譯鏈接生成可執行目標文件

發佈了371 篇原創文章 · 獲贊 2188 · 訪問量 444萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章