C++ 開發環境架設:使用 CodeLite

很久沒寫 C++ 了,上次是一年多前的事,當時為了在專案中使用 TDD 開發,套用 CppUTest 當 Unit Test Framework,而這套 Framework 就是用 C++ 寫的。最近工作上又需要用到 C++ 當底層資源,環境重架之餘,順手紀錄一下歷程。

原本的開發環境是 Windows 7 + uVision,使用 C 來開發 MCU。為了導入 TDD,需要在 Local 端有編譯執行的能力,考量到資源開放性,選擇用 cygwin 來執行 GNU,同時選擇當時資源豐富的 VSCode 做為編輯器。如果現在重選的話,可能會直接使用 Ubuntu 的 GNU,搭配 STM32CubeMX 自動生成 Makefile 來編譯,不論是自由度還是效能都較好,而且沒有後面 cygwin 一系列踩坑問題,But,人生就是這個 But,當時我不知道 cygwin 有這麼多坑。

由於現在工作的開發環境會用 Windows 10,仍然需要找個在 Windows 下的編譯執行工具,同時也希望是 cross-platform,無論 IDE 有多好,如果不能 cross-platform,不利於現在變動頻繁的開發環境與挑戰(想想看,原本用 .NET 全家餐用得好好的,結果開發環境變 Linux,又要重新用一套 IDE,而且你可能已經在原本的 IDE 上自行整合一些套件了)。現行的幾款 C++ IDE 有 CodeLite、Eclipse、CLion、Dev-C++、Visual Studio。由於我不想為 C++ 重新編寫 Makefile,不考慮 VSCode、Notepad++ 等 Editor;Dev-C++ 跟 Visual Studio 因為無法跨平台也劃掉;CLion 是 JetBrains 開發的 IDE,據說相當優秀,是很多人的首選,但我只需要開發小程式,用付款軟體太麻煩,劃掉;Eclipse 通常開發 Java 比較多,而且吃的資源有點兇,因此最後選用 CodeLite 來開發。

如果你是習慣使用 Visual Studio 的 Windows 開發者,不用懷疑,直接用 Visual Studio;如果你想在工作上選擇一款 cross-platform,CLion 是你的好夥伴;如果你只是想簡單寫點程式來驗證概念,也許可以跟我一樣用 CodeLite。

Install MinGW

CodeLite 底層推薦用 MinGW 中的 GNU toolchain 來編譯,如果對象平台是 Windows,也可以使用 Visual C++,因為 WIN 10 有 WSL 可以執行 Linux Binary File,使用 MinGW 就能滿足需求了。

MinGW 是一套 Windows 下的開發環境,讓 Windows 的開發者也能使用 GNU 等 Linux 工具。要安裝 MinGW,到 MinGW 官網下載安裝程式

安裝時,在 Basic Setup 中選擇 mingw32-base-bin、mingw32-gcc-g++-bin、msys-base-bin

安裝完後,要將執行檔路徑加入環境變數,讓 CodeLite 能抓到底層。打開控制台\系統及安全性\系統,選擇[進階系統設定],點選[環境變數]

在系統變數中,編輯 Path

將 C:\MinGW\bin 加入 Path 中。

Install CodeLite

接著來安裝 CodeLite,到官網下載安裝檔,官網上可以看到 CodeLite 主要支援三款語言:C++、php、node.js,主要 TA 是放在後端上

下載,解壓縮,執行,一路安裝精靈到結束,沒難度。

Configure CodeLite

首次執行 CodeLite 時,先用 Setup Wizard 設定環境,開發的環境先用 C/C++

如果前面有成功安裝 MinGW 跟 g++,這邊選擇 Compiler 時就會看到

Test Example

設定完後,用 CodeLite 來寫一支簡單的 C++,確認功能正常。先建立工作空間,在工作空間點右鍵,加入新專案

選擇用 g++ 的 Console Template

CodeLite 會套用範本長出基本檔案

CPPWorkspace
├-- Test1
    ├-- src
        ├-- main.cpp

打開 main.cpp,查看內容

#include <stdio.h>

int main(int argc, char **argv)
{
    printf("hello world\n");
    return 0;
}

由於這是 C,將它改成 C++

#include <iostream>

int main()
{
    std::cout << "Hello testing...";
    return 0;
}

來建置並執行程式,先在導覽列選擇 Build > Clean Project ,把舊的檔案(如果有的話)清空,選擇 Run 來建置執行

程式執行完成,開發環境建好啦!

小結

整個執行下來,最麻煩的不是軟體操作,而是一開始要選用哪個 IDE。原本想依照平常的開發環境,選用 VSCode,但因為需要 Compiler,又不想用 cygwin,只好研究 VSCode 跟 WSL 的串法,真的串起來後又發現自己不想寫 Makefile,只好回去選別的 IDE。

也想說是不是直接用 cl 來編譯,但查詢 VSCode 的文件後,發現

Start VS Code from the Developer Command Prompt

To use MSVC in VS Code, you must start VS Code from a Developer Command Prompt for Visual Studio. An ordinary Windows command prompt, or a Bash prompt, does not have the necessary environment variables set.

如果有 Visual Studio,直接用 Visual Studio 就好啦,為了要寫個小程式還要特定安裝大型 IDE,好像有點誇張。而且 Visual Studio 不是跨平台,跟我的訴求不合。找了一陣子後,決定採用 CodeLite。

反倒後面安裝執行沒問題。人生就是這樣,做決定最困難。

Reference

Read more

Weekly Issue 第 25 期:Slack 基礎設施爭議

因為地緣政治議題,我們會關心資料存放的地點是否足夠安全,即使當使用者被盯上,他仍然可以放心資料足夠隱密。這也是為什麼當網路上傳出 Slack 台灣的資料轉移到阿里雲時,會引起爭議的原因。 Slack 已經出面澄清並無此事,這也讓我們反思,當軟體業面臨這類公關危機時,應該要揭露到什麼程度。 🗞️ 熱門新聞 Slack 在臺服務將移轉至中國? Salesforce:臺灣用戶使用全球基礎設施,與阿里巴巴無關 前幾天 Salesforce 傳出要將 Slack 台灣資料轉移到阿里雲,立刻引起一陣討論,有 Salesforce 的人出來澄清,說沒有這回事。 「台灣市場一直以來都是採用 Global Infrastructure 全球基礎設施。簡單說,台灣用戶的資料是儲存在美洲或亞太區(如日本),跟中國的阿里雲在物理和邏輯上都是完全切開的。 」 讓我有興趣的是,Salesforce 沒有說他們是用哪個雲平台。我們以前有次遇到類似情況,也討論到是否揭露使用平台。當時我持反對意見,認為只需要揭露「使用全球基礎設施」已經夠了,頂多說非中國廠商的服務就好,不需要也不應該說明具體是哪個。

By Ken Chen

Weekly Issue 第 24 期:網路的精神高地

前陣子去了雪梨一趟,跟布里斯本或台北都形成有趣的對比,旅行中也不斷在想,一座城市如何發展出自己的文化?這有點像是網路平台如何形成聚落,而又如何消亡。 很喜歡本期談知乎的一篇文章,理想主義的光輝是最吸引人的,我常在想,有沒有辦法將那座「看不見的城市」帶到真實世界中。 🗞️ 熱門新聞 A ChatGPT prompt equals about 5.1 seconds of Netflix 看到 Simon Willison 提到,如果 Sam Altman 的資訊是對的,每個 LLM 提問相當於 5.1s 的 Netflix 影片耗能。 計算的需求讓輝達跟台積電挖到金礦,那電力需求又會讓誰挖到金礦呢? ✨ 科技觀點 我们失去的不只是知乎,而是中文互联网的精神高地 「那时的知乎,更像“思想沙龙”,而非“内容平台”。」 昨天跟朋友聊天,

By Ken Chen

Weekly Issue 第 23 期:Mastodon CEO 離職感言

電子報本質是種自媒體,儘管我發文前都會確認,還因為能力所限,偶爾還是有沒做好的地方。每次遇到時我都會想,不知道其他自媒體是如何查證的呢? 現代的訊息越來越快,不只是自媒體,很多專業媒體也不見得有完備的查證能力,我猜當內容氾濫,「真實」會變得越來越有價值,最終變成一門生意。 🗞️ 熱門新聞 Explore the independent web Ghost 最新一期的電子報談到他們如何處理「內容發現」的問題。 簡單來說,他們有個內容發現工具 Ghost Explore,如果創作者願意提交自己的網站數據,他們能依照這些網站數據來推薦。再來,他們還會參考 ahrefs 的資料,判斷該網域是否具有高品質。 這比 Substack 發展社群工具,更貼近我對產品的想像。現代內容網站基本都需要演算法,這已經不是要不要,是怎麼設計的問題。 My next chapter with Mastodon Mastodon 的 CEO 即將卸任,他發了篇談談這段時間的心路歷程。

By Ken Chen

Weekly Issue 第 22 期:Google 發布 Nano Banana Pro

最近大新聞要算 Cloudflare 出問題,以及 Google 發布新的 AI 模型。新的 Nano Banana Pro 不管在一致性還是文字呈現,都出乎意料地好。如果 Google 真的能在這場 AI 大戰中笑到最後,這一定會成為商業競爭的經典案例。 🗞️ 熱門新聞 How we’re bringing AI image verification to the Gemini app Google 幾天前發布的 AI 模型太強了,各種錦上添花的稱讚就不說了,在 Simon Willison 的 Blog 看到,Google 設計出防偽機制,避免假圖到處跑。 機制有兩種,一種是在生成的內容中,插入人眼不可辨識的 SynthID,

By Ken Chen