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 第 6 期:Duolingo CEO 看 AI 與遊戲化

現在是 AI 時代,大家都在想怎麼讓自己的產品跟 AI 掛勾,但具體要怎麼做呢?背後的思考有哪些?Duolingo 給出他們自己的觀點。 例如,現在的產品是否只是 AI 套皮,你接收使用者的問題,套上自己的提詞後,拿去給 OpenAI,要它回答你?在現在百家爭鳴的情況下,選擇哪個模型會有差嗎?AI 能帶來新用戶與新營收嗎?等等。 另外本週也選了一篇少數派的文章,談 AI 對 RSS 的影響,對 RSS 未來方向有興趣的人不妨看看。 🗞️ 熱門新聞 Duolingo CEO Luis von Ahn wants you addicted to learning Duolingo CEO 專訪,相當紮實,推薦閱讀。 「對我們來說,

By Ken Chen

Weekly Issue 第 5 期:OpenAI 的企業文化

我一直都喜歡看科技公司的願景與文化,原因是,我想知道別人是如何看待自己的使命,又是用什麼方式打造它。願景通常在官網都會有,但想要知道文化,只能聽內部人講講了。 Palantir 前陣子因為它不同於矽谷的文化,而引起很多討論。受此影響,前 OpenAI 的員工在離職創辦公司後,也發文談論他所見到的 OpenAI。最讓我震撼的是,他們幾乎沒有資金困擾,想的都是如何打造出色的 AI 模型。 🗞️ 熱門新聞 Reflections on OpenAI 前員工談 OpenAI 的內部文化。 讀起來最大的感觸是,有些價值觀、觀點、實踐,只有在世界級的公司跟資源下,才有可能建立起來。讓每個團隊各自為政,看誰能端出最好的成果,這對新創(特別是沒拿創投)實在太奢侈了。 我相信這種經歷會變成是「可以帶著走的饗宴」,那種衝擊也是最寶貴的。 AI Open Source Productivity METR 前陣子發了一篇研究,說使用 AI

By Ken Chen

Weekly Issue 第 4 期:Canonical 的面試經驗

這星期看了比較多職涯相關的內容,最讓我驚訝的是 Canonical 的面試流程,當我分享這則新聞後,有更多朋友紛紛補充他們的面試經驗:需要經歷三個 Tier,每個 Tier 都有三關,而內容甚至還包括問人選「高中成績」與「大學生活」。 我很難想像一家做 Linux 發行版的公司,會如此草率對待人選,這讓我對他們家的產品有了很大的問號。 🗞️ 熱門新聞 My experience with Canonical's interview process 這是一篇 Canonical 的面試經歷(如果你不知道什麼是 Canonical,就是開發 Ubuntu 的公司)。 整個過程讓人非常驚訝,甚至還需要人選回答「高中成績」,而在面試中做筆記居然是扣分項。我看完後有股移除 Ubuntu 的衝動。真的太扯啦。 What happens when engineers work

By Ken Chen

Weekly Issue 第 3 期:Cloudflare 宣布內容獨立日

最近用了很多 Cloudflare 的產品,像是 Zero Trust、WARP,還有 Cloudflare Tunnel。每次的體驗都讓我嘖嘖稱奇,好像它們預判了我的需求一樣。這家公司始終追求著「更好的網路」這個目標,內容付費又是另一個例子。 🗞️ 熱門新聞 Content Independence Day: no AI crawl without compensation! 賽博佛陀 Cloudflare 又來普渡眾生了。這次是針對 AI 爬蟲收費。 「網路正在改變。它的商業模式也將改變。在這個過程中,我們有機會從過去 30 年網路的優點中學習,並為未來的網路創造更好的環境。 」 Cloudflare 真的很有意思,連思考的角度都很有趣。 內容當然是有價的,只是價格會怎麼支付呢?在現代的內容創作,這題變得非常複雜。 Folklore.org: Joining Apple Computer

By Ken Chen