天天看點

Windows系統使用mingw編譯環境

為什麼要使用mingw

在筆者開發軟體的過程中,逐漸總結了一些對初學者可能很有用并且少走彎路的經驗。今天就來說一下編譯器的選擇。

編譯器就是把人類容易讀懂的進階程式語言(c,c++,java,python)翻譯為低級程式語言的工具。每種程式設計語言都有其編譯器,有的語言在不同的作業系統上還有不同的編譯器。其中c/c++是使用很廣泛的語言,也是筆者在開發過程中經常用到的語言。

由于最近的項目都是需求在不同的平台上運作,除了選擇跨平台的界面架構Qt外,還需要一個跨平台的編譯器。

如果沒有跨平台的編譯器,那代碼中就會有很多這種判斷作業系統的條件編譯分支。

#if defined (Q_OS_LINUX)
	//平台特用操作
#endif
#if defined (Q_OS_WIN32)
	//平台特有操作
#endif
           

主流的c/c++編譯器有MSVC和GCC,MSVC是微軟Windows平台Visual Studio自帶的C/C++編譯器,隻能在Windows系統下使用。GCC是支援多種程式設計語言的編譯器,支援多種作業系統和多種晶片體系,更重要的是,它是自由軟體。

基于此,如果我們想要開發Windows系統和類unix系統都通用的軟體,那一定要選擇GCC,即使隻在Windows系統下開發和分發,對于一個程式員,使用GCC可以像在linux系統上那樣使用cmake。衆所周知,cmake也是一個跨平台的通用的強大的編譯過程管理管理工具,是c/c++程式員必須使用的一個工具。

而在Windows系統上,使用GCC的方法是安裝Cygwin或者MingW。但是它們有差別,使用Windows + Cygwin,可以在Windows上學習Linux指令,還可以在Windows上做Linux軟體的開發,包括用GCC編譯elf(交叉編譯);使用Windows/Linux + MingW,可以不使用Windows的MSVC,用GNU的自由軟體來編譯生成不依賴第三方庫的exe二進制程式。

在qt的Windows安裝版本中,本身提供的MingW,可以在安裝qt的過程中選擇安裝。安裝完成後如果需要在vscode或者指令行中使用gcc編譯器,還需要把mingw路徑加入環境變量。

如何在vscode中使用mingw(Cmake方法)

在VScode中安裝cmake插件,在ctrl+shift+p出現的指令行中輸入cmake選擇build即可。首次執行需要選擇編譯器路徑,如果把mingw加入環境變量,則可以自動搜尋到。當然,你還需要一個正确的Cmakelists.txt檔案。這和在Ubuntu系統下的VScode中使用cmake是一樣的流程。

一些測試

筆者在Windows系統下已經使用mingw編譯環境編譯了opencv,使用的是cmake的界面程式,編譯過程和使用MSVC類似,需要在配置工程前選擇編譯器路徑(即使你設定了環境變量)。

在vscode下寫了helloworld程式,可以正常調試。

一些不足

筆者使用的一些工業相機提供的SDK的庫檔案在Windows平台下隻有MSVC編譯版本,使用mingw編譯器連結這些庫必定困難重重,而且可能根本就行不通。網上有相關的資料,但都是在特殊情況下才有效,不過好在還用Ubuntu版本可供使用。

繼續閱讀