智合網圖總目錄-各學院
關於智合網版主
智合網沿革
價值管理學院簡介
價值管理學院總目錄
價值管理簡介
價值管理總目錄
價值的定義

2021年3月31日 星期三

Codeblocks for Windows

本文說明如何安裝 Winodws 版本的 Codeblocks,以及安裝與使用合適的 C++ Complier,包括,cygwin 以及  MinGW。

一、安裝 Windows 版中的 Codeblocks

可至「Windows 版的 Codeblocks 官方下整綱站」,於 Microsoft Windows 段落中,顯示多種不同類型的 Winodws 版 Codeblocks,一般而言,許多人會直接下載「codeblocks-xx.xx-setup.exe」,例如,「codeblocks-20.03-setup.exe」的安裝檔案,但是此一類型的安裝檔並不包括適合 Windows 環境下的 GNU GCC complier,所以安裝過要再安裝相關的 C++ complier 並將這些 C++ Complier 與 codeblocks 串接設定好,還要花很多的功夫,甚至會產生很多的錯誤,所以建議一開始不要安裝此一不包括 GNU GCC complier 的安裝檔。

建議要下載「codeblocks- xx.xxmingw-setup.exe」,例如,「codeblocks-20.03mingw-setup.exe」,此一類型的安裝檔,就直接包括會安裝 MinGW (Minimalist GNU for Winodws)  版本的  GNU GCC complier,安裝完成後此一  MinGW 的完整目錄路徑為「C:\Program Files\CodeBlocks\MinGW」,此一版本的 MinGW 是一個 64 位元的版本。當安裝完成 CodeBlocks 與 內含的 MinGW時,CodeBlocks 會自動偵測預設與連接設定的 C++ Complier 為 GNU GCC complier 且該 Complier 是位在 MinGW 的目錄下。此一版本的   CodeBlocks 其優點在於,使用者不用事後再手動的安裝與設定連接 C++ Complier,因為手動安裝與設定不同的 C++ Complier 有些複雜而且容易出錯。

二、安裝與管理GNU GCC Complier for Winodws

GNU GCC Complier 預設是在  Linux 的環境下執行,若想要在  Windows 環境下執行 GNU GCC Complier 就必須要安裝一個中介的管理軟體,一般而言主要包括兩種:Cygwin 、 MinGW,以及 MinGW64。其中 MinGW 預設是 32 位元版,且官方網站已不存在可以下載的網址,所以建議安裝 MinGW64,此一版本是 64 位元版,是由不同的組織來開發維護。

但若以簡單方便性考量,其實在安裝 Codeblocks 就要選擇下載安裝內含 MinGW 的 Codeblocks 版本即可,請參閱「Codeblock C++ IDE 軟件管理與建置專案概要」文章的說明,如此就不必再獨立下載安裝 Cygwin 與 MinGW 了。

二-01-安裝與管理Cygwin

Cygwin 應是最早發展於 Windows 中管理使用 Linux 環境中相關軟體套件的軟體,可於「Cygwin 官方下載網址」頁面中的 Installing Cygwin 段茖中,下載 Windows 的安裝檔,例如,「setup-x86_64.exe」。此一安裝檔也等同於事後維護 Linux 軟體套件的管理程式檔,所以事後要新增或移除相關的 Linux 軟體套件時,也要執行此一程式。

當執行安裝檔後,會先出現一個簡單的說明書面,然後點按「下一步」,接著出現要從何處下載與是否只下載不安裝等選項,預設並點接「Install from Internet」,再點按「下一步」。

接著出現要安裝 Cygwin 程式的根目錄 (Root Directory) 之設定,預設為「C:\cygwin64」,然後在下方的段落中點按「All Users (RECOMMENDED)」,讓所有使用者皆可執行使用此一程式,再點按「下一步」。

接著出現安裝過程中暫時檔案的儲存目錄,預設為「C:\temp」,再點按「下一步」。

接著出現選擇網路的設定,預設點選「Use system proxy settings」 使用系統預設連線的方式,再點按「下一步」。

接著出現選擇下載相關 Linux GNU 軟體套件的伺服器,建議點選台灣國立中央大學的 ftp 伺服器「ftp://ftp.ntu.edu.tw」,再點按「下一步」。

接著出現管理與新增安裝軟體套件的畫面。畫面的白底區塊為目前所安裝的軟體套件。上方的段落中,最主要的欄位為 View 區塊,預設值為「Pendding」,也就是將已安裝或未安媴裝的軟體目錄全部展開。因為現在想要安裝 GNU GCC  Complier ,此時要在 View 欄位中點開,並點選「Category」類別的方式來層層顯示軟體列表,首先只會出現「All」類別,將之點按往下展開並點按 「Devel」的子目錄,並往下尋找有關 gcc 的相關套件,請點選「gcc-g++」,此時畫面分隔為左右兩個子視窗,在左視窗中該點按的軟體列表中預設顯示「Skip」,代表跳過不安裝的意思,所以必須要點在其右邊的向下鈕圖示,並選擇想要安裝的該軟體套件的版本,通常都是選擇最新的版本;又「Uninstall」代表要移除該套件,「Keep」代表仍舊保留該套件,「Reinstall」代表重新安裝(大都是懷疑已安裝的套件檔案有損傷不完整)。此時,可以同時選定多個軟體套件來進行安裝與管理,接著再點按「下一步」。

接著會出現用以確認想要安裝或更新的軟體套件,例如,若 cygwin 有更新版本時,就會自動出現要更新的訊息,接著點按「下一步」。

接著出現安裝的過程進度等訊息。最後出現已完成安裝的訊息畫面,該畫面中也可勾選是否在桌面  (Desktop) 與系統啟始選單中建立圖示選單,最後點按「完成」,來完成結束軟體套件的安裝。

二-02-安裝與管理MinGW64

若要獨立安裝 MinGW,請至「台灣 OSDN 網中的 MinGW 下載網址」,然載安裝檔「mingw-get-setup.exe」,第一次執行此一安裝程式時,當主程式安裝完後會在桌面與系統啟始選單中建逼該 MinGW 的管理程式「MinGW Installtion Manager」,亦即,此一安裝檔後續不用再動新執行一次,後續新增與管理相關套件時要執行的是主程式「MinGW Installtion Manager」。

當執行安裝程式時,會先出現安裝系統的說明,請點按「Install」。

接著出現要安裝的目的目錄,預設為「C:\MinGW」,再點按「continue」。

當主程式 「MinGW Installtion Manager」安裝完成後,會進入軟體套件安裝的畫面,此時左邊視窗中,點按「Basic Steup」,並在右邊的視窗點選「mingw32-gcc-g++-bin」,接著再點按右上方的選單選項「Installation」,並點按「Apply changes」來達行安裝。

接著就會出現安裝的畫面,最後完成安裝。

MinGW 的套件並不多,主要是被使用於 C/C++/Fotran 程式的開發而已。

三、Codeblocks 如何使用與變更使用某一 C++ Complier

如前已說明如何安裝與管理各種 C++ Complier,包括, cygwin64 ,MinGW64,以及內含在 CodeBlocks 中的 MinGW,本節將說明如何讓 Codeblocks 與上述所安裝的 C++ Complier 進行連接設定,讓 Codeblocks 知道於何處去執行這些 C++ Complier。

在 Codeblocks 中連接與使用這些 C++ Complier 分成兩個階段:

  • 第一階段:設定各 C++ Complier 的連接路徑。
  • 第二階段:設定或變更每一個專案要使用那一個 C++ Complier。

三-01-第一階段:設定各 C++ Complier 的連接路徑

設定各 C++ Complier 的連接路徑是指要針對 Codeblocks 所已建立的各種 C++ Complier 列表名稱來設定該已安裝的 C++ Complier 中各相關程式的名稱與目錄路徑。每一個已安裝的 C++ Complier 都要進行設定,否則在第二階段對每一個專案指定所要使用的 C++ Complier 時,會因為沒有設定或設定錯誤而無法進行 Complier (即 Build)。

可點按「Settings-->Complier Settings」再點按左視窗中的「Global complier settings」,並於右邊視窗中於「Selected Complier」區塊中,去點按該欄位,此時將會列出 Codeblocks 所預設建立很多個各種 C++ Complier 的標題名稱與相關 complier 的檔案名稱,其中目前本文最重要的包括,GNU GCC Complier,以及 Cygwin GCC。

當一開始點按這些  C++ Complier 時,在「Complier's installation directory (編譯器安裝的目錄)」區塊的欄位中,會發現是空的,此時要做的就是設定該編譯器正確的安裝目錄。其做法有兩種,第一種最方便的做法是直接點按欄位最右邊的「Auto-detect (自動偵器)」,第二種做法是直接點按「...」按鈕,以手動的選定該 C++ Complier 的安裝目錄。

三-01-01-第一種方法:點按「Auto-detect」來自動搜尋 C++ Complier 的安裝目錄

第一種方法:點按「Auto-detect」後,系統會依照由小到大的目錄名稱來進行搜尋,搜尋到第一個 Codeblocks 當初所內部所認定該編譯器的 complier 執行檔時,就會停止下來,並以此目錄做為在「Complier's installation directory」欄位所選定的 C++ Complier 的安裝目錄。

因為本範例中,已安裝三個 C++ Complier,其安裝路徑分別是:

  • Cygwin:其安裝路徑為 C:\cygwin64
  • 獨立安裝的MinGW:其安裝路徑為 C:\MinGW
  • 內含於 Codeblocks 中的 MinGW:其安裝路徑為 C:\Program Files\CodeBlocks\MinGW

例如,先選定要設定的 Compiler 是 GNU GCC Complier,然後接著點按「Auto-detect」,此時第一個所找到的安裝目錄是「C:\cygwin64」。噫!難道不應該會是 「C:\MinGW」這個目錄碼?

其實要先瞭到到一個事實,就是 Cygwin 與MinGW 皆是屬於 Linux 版本的 C++ Complier,所以相關的編譯程式程式檔名都是相同的,例如,都是 g++,所以此時將 「GNU GCC Complier」這一個 Complier 的設定檔內容,指定其安裝目錄為 「C:\cygwin64」也是正確的,當然要指定給「C:\MinGW」,或是指定給「C:\Program Files\CodeBlocks\MinGW」都是可以的,將來專案程式進行編譯時是可以被正確執行的。

只是因為通常我們建議下載安裝的 CodeBlocks 的版本是內含 MinGW 的版本,所以自然應要指定的是「C:\Program Files\CodeBlocks\MinGW」,但是點按的是「Auto-detect」讓他自動尋找,若找到的不是「C:\Program Files\CodeBlocks\MinGW」,不更改也可正確的執行編繹程式,若要變更就只好手動點按「…」鈕來手動設定該目錄路徑了。

又,Codeblocks 的各種 C++ Complier 列表中,並沒有「MinGW」這個 Complier 的名稱,所以通常就使用「GNU GCC Complier」這個名稱來設定所安裝 MinGW 的目錄了,此時要指定的是「C:\MinGW」,或是指定給「C:\Program Files\CodeBlocks\MinGW」都是可以的,當然端賴是否之前有安裝到這些目錄而定了。

又,Codeblocks 的各 Complier  列表中,包括「Cygwin GCC」 這個 Complier 的名稱,所以自然最好將之設定為「C:\cygwin64」以符合名稱一致的原則。若想將之安裝的目錄設定為「C:\MinGW」,或是指定給「C:\Program Files\CodeBlocks\MinGW」也是可以的,將來用來編譯專案程式時仍舊可以被正確的編譯,這是因為 MinGW 也是屬於 Linux GNU GCC Complier。

三-01-02-第二種方式:點按「…」鈕來手動設定 Complier 的安裝目錄

手動安裝設定 Compiler 安裝目錄的方式,主要是點按「…」來選擇安裝的目錄,當然直接在欄位中手動輸入文字也是可以的。

三-02-第二階段:設定或變更每一個專案要使用那一個 C++ Complier

每一個程式專案皆要指定要使用的 Complier 為何,設定的方式有兩個,第一個方式是在新建一個程式專案時,在 Compiler 的設定畫面中進行設定,此一方式很清楚簡單不用細說,

第二個方式是在專案建立後,開始該專案後,點按「Project-->Build Options」來設定。此時所出現的畫面中,在左邊的視窗中會出現三列資料,第一列為專案的名稱,例如, test01,第二列為 Debug 是指該專案主目錄下所建立的 Debug 目錄,第三列為 Release 是指該專案主目錄下所建立的 Release 目錄,並無法設定要選用的  Compiler。此時點按第一列與第二列,在其左方皆有各自的「Selected Complier」,亦即要選用的 Complier 。

點按第一列專案名稱後所要選用的 Compiler 是指當初建立該專案時所選用的 Compiler,而第二列 Debug 所要選用的才是目前想要變更使用的 Compiler。當該專案建立後,第一列與第二列所選定的 Compiler 將會是一致的,但專案建立後要變更所使用不同的 Compiler 時,只需要設定第二列 Debug 中所選定的不同 Compiler 即可,不用再回去重設第一列專案名稱下所選定的 Compiler。所以第一列專案名稱所選定的 Compiler 在專案程式的開發過程中,比較像是一個歷史記錄而已。也就是說第一列與第二列所設定選用的 Compiler  是可以不同時,主要會使用第二列 Debug 所選定的 Compiler。

當每次變更專案所使用的 Compiler 時,就要點按「Build-->Rebuild」來重新編譯該專案程式,若程式並沒有修改,只是點按「Build-->Build」是不會重新編譯的。

例如,變更使用 Cygwin GCC 來重新編譯 (Rebuild) 專案 test03 的訊息範例如下:

-------------- Clean: Debug in test03 (compiler: Cygwin GCC)---------------
Cleaned "test03 - Debug"
-------------- Build: Debug in test03 (compiler: Cygwin GCC)---------------
g++.exe -Wall -fexceptions -g  -c C:/codeblocks-c++/test03/main.cpp -o obj/Debug/main.o
g++.exe  -o bin/Debug/test03.exe obj/Debug/main.o   
Output file is bin\Debug\test03.exe with size 175.21 KB
Process terminated with status 0 (0 minute(s), 1 second(s))
0 error(s), 0 warning(s) (0 minute(s), 1 second(s))

四、各種編譯錯誤情形

範例一:

若發現如下編譯錯誤的訊息:

-------------- Build: Debug in test01 (compiler: GNU GCC Compiler)---------------

g++.exe /W3 /EHsc /Zi /D_DEBUG /MDd  -c C:\codeblocks-c++\test01\main.cpp -o obj\Debug\main.o
g++: error: /W3: No such file or directory
g++: error: /EHsc: No such file or directory
g++: error: /Zi: No such file or directory
g++: error: /D_DEBUG: No such file or directory
g++: error: /MDd: No such file or directory
Process terminated with status 1 (0 minute(s), 0 second(s))
5 error(s), 0 warning(s) (0 minute(s), 0 second(s))

從上述錯誤訊息中可以看出突然出現了 /W3, /EHsc, /Zi, /D_DEBUG, /MDd 等目錄,顯然這些都是不存在的目錄,當仔細回想,有可能是當初安裝 CodeBlocks 時,並未安裝任何的 C++ Compiler,所以就沒有設定,然後就直接建立一個程式專案,然而事後另外建立各種 C++ Compiler 後,再重新變更該專案所使用的 C++ Compiler 已經無用,亂掉了。

所以解解的方式,就是刪除該專案,再重新建立一個專案即可。

主要網頁類別

  1. 關於智合網