2018年7月23日 星期一

我覺得 premake 做對的事

premake 是一個用途如同 cmakemeson 之類,幫忙你「產出指定編譯工具的專案檔」的自動工具。

假設你有一個自行開發的跨平台軟體專案,需要能被 Windows MSVC / Linux Make / MacOSX XCode 三個編譯平台所編譯。最直覺的作法就是分別建立三個編譯工台的專案檔,也就是 MSVC 的 solution 檔案、Makefile、以及 XCode 用的 workspace 檔案。這個作法在維護上會有一個大問題 -- 每當你新增了原始碼檔案、或是變更了某個編譯設定,你必須要記得同時去更新另外兩個平台的專案檔,否則下次有人在另一個平台上工作時就會氣急敗壞地嚷嚷著編譯失敗。

而 premake / cmake / meson (以及其它族繁不及備載) 這類工具,就是試圖解決這個問題。通常它們的作法是: 你必須改按照它們的方式來編寫專案設定檔,然後透過這份專案設定檔來一次生成所有目標編譯工具 (MSVC / XCode / Make ...) 的專案檔。