位元詩人 [C++] 程式設計教學:在 macOS 上寫 C++ 程式

C++開發環境
Facebook Twitter LinkedIn LINE Skype EverNote GMail Yahoo Email

前言

在 macOS 上寫 C 或 C++ 程式有一些優勢,因 macOS 在 OS X 之後是 Unix 系統 (出處),在 GNU/Linux 或其他類 Unix 系統上的概念和工具可延用。本文專注在 C++ 相關的議題上。

編譯器 (Compiler)

macOS 上主要的 C++ 編譯器是 Clang,而非 GCC,只是 Clang 刻意在部分參數上和 GCC 相容。相較於 GCC,除了少數 Clang 缺乏的特性,像是先前 Clang 不支援 OpenMP 等 (見這裡),我們才需要另外安裝 GCC,要不然直接使用 Clang 即可。

由於 Xcode 算是肥大的 IDE,如果不需要使用 Xcode,可下載安裝 Command Line Tools for Xcode 即可獲得 Clang 和其他相關開發工具。現在這套軟體從 Xcode 獨立出來,可單獨安裝。

要下載該開發工具需加入 Apple Developer 計畫。不過,如果沒有要發佈蘋果平台程式 (註) ,加入該計畫只需申請一個免費帳號,不需付出額外的費用。

(註) macOS、iOS、watchOS、tvOS 等平台

如果想用 GCC,也是要先安裝 Clang 後,再用 Clang 去編譯出 GCC,故仍要下載此軟體。如果讀者在某些考量下,要用真正的 GCC,可透過 Homebrew 或 MacPorts 等套件管理軟體安裝。此處以 Homebrew 為例:

$ brew install gcc

編輯器 (Editor)

由於取得 Clang 或 GCC 相當容易,在 macOS 上寫 C++,反而是在選 IDE。常見的選項如下:

  • Xcode
  • Code::Blocks
  • Netbeans
  • CLion (商業軟體)
  • Visual Studio Code (VS Code) 或其他編輯器

C++ 中真正可跨 IDE 的專案管理工具是 Make 或 CMake,這兩種工具的好處是不被 IDE 綁住;但對初學者來說,重要的是儘快熟悉語法,而非在專案設定檔上糾結。一開始時,直接用 IDE 內建的專案管理工具即可。

在上述數種 IDE 或編輯器中,前兩者有自己的專案設定檔,但也可以用 Makefile 管理專案。Netbeans 使用 Makefile,但由 IDE 自動生成,使用者不需手動寫 Makefile。CLion 使用 CMake 來管理專案,雖然 CMake 語法不會太難,一開始還是要花點時間學一下。

至於 VS Code 沒有自己的專案設定檔,要手動寫 Makefile 或 CMakeLists.txt。新手建議先用前三者之一,因為我們一開始不會用到 IDE 進階的功能,只是要利用 IDE 省下管理專案的心力。

使用 Xcode 建立 C++ 專案

雖然 Xcode 比較肥大,由於 Xcode 是 macOS 的預設 IDE,這裡以 Xcode 為例,展示建立 C++ 專案的過程。

進入 Xcode 的歡迎畫面:

選擇模板。這裡選擇 Command Line Tools:

設置專案選項,專案語言選擇 C++:

選擇專案存放位置:

進入 Xcode 的編輯器:

之後就可以用 Xcode 練習 C++ 語法。

套件管理 (Package Manager)

macOS 沒有內建的套件管理程式,通常會用 Homebrew 等第三方方案來安裝 C++ 函式庫及其他的自由軟體。一開始學語法時不會馬上用到第三方函式庫,有需要的讀者可自行安裝。

建立 Hello World 程式

以下是 C++ 版本的 Hello World 程式:

#include <iostream>

int main(void)
{
    std::cout << "Hello World" << std::endl;

    return 0;
}

使用終端機環境編譯和執行程式的指令如下:

$ g++ -o hello hello.cpp
$ ./hello
Hello World

在 macOS 中,g++ 通常是指向 Clang 的別名,而非真正的 GCC。可透過 g++ --version 指令來確認:

$ g++ --version
Configured with: --prefix=/Library/Developer/CommandLineTools/usr --with-gxx-include-dir=/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/4.2.1
Apple clang version 13.0.0 (clang-1300.0.29.30)
Target: arm64-apple-darwin20.6.0
Thread model: posix
InstalledDir: /Library/Developer/CommandLineTools/usr/bin

如果使用 IDE 來編譯和執行程式的話,選擇「Run」之類的選單項目即可。請自行查閱該 IDE 的說明手冊。

關於作者

身為資訊領域碩士,位元詩人 (ByteBard) 認為開發應用程式的目的是為社會帶來價值。如果在這個過程中該軟體能成為永續經營的項目,那就是開發者和使用者雙贏的局面。

位元詩人喜歡用開源技術來解決各式各樣的問題,但必要時對專有技術也不排斥。閒暇之餘,位元詩人將所學寫成文章,放在這個網站上和大家分享。