[047] JUCE Diary #6: 地雷

JUCE v4 版之後要求建立 ROLI 帳號才能下載,過了那關之後會取得一個壓縮檔,裡頭放了 JUCE 的原始碼跟一支名為 Projucer 的工具。

建立 JUCE 專案的工作由 Projucer(v3 以前叫做 Introjucer) 全權負責,也是從 JUCE v4 之後,Projucer 會要求輸入 ROLI 帳密:

底下示範如何建立一個 GUI 應用程式(Visual Studio 2015):

上圖同時也示範了如何移除不需要的 JUCE Module。雖然 Audio Processing 是 JUCE 強項,但我的專案用不到,於是將其刪除。

地雷在這裡

置放 JUCE 原始碼的位置很重要!

上述步驟完成後,用 Visual Studio 2015 開啟 Build\VisualStudio2015\GUIApp.sln 編譯並執行,會看到單一視窗應用程式。看似運作良好,但其實有未爆彈

在我的電腦上,Projucer 位於 I: 磁碟,而新增的專案 GUIApp 則位於 H: 磁碟,把 JUCE 「解剖」來看會發現,其位於 JuceLibraryCode 目錄底下的 juce_core.h 實際上引用了 I: 底下的 juce_core.h,而且是絕對路徑

這顆未爆彈會在你把專案放到版控,然後到另一個環境簽出,準備編譯時爆炸。如果是跟別人合作的案子,你的同事會靠北說專案無法編譯,可是在你的電腦上明明就沒問題。然後你們就會吵很久,搞不好因此絕交切八段...

解法是:

  1. 解開後的 JUCE 原始碼,連同 Projucer、範例程式碼(~ 76MB)全部放到版控裡。
  2. 放 JUCE 原始碼的最佳位置是 .git/3rdparty/juce
  3. 把 JUCE 放到控制裡,然後才開始做其他的事:新增專案之類的

正常的路徑應該長這樣:

這樣還沒完。Projucer 專案檔副檔名為 .jucer,可以在專案根目錄找到,裡頭也不能有絕對路徑,像底下這樣是不對的:

不客氣!You are welcome!