編譯的Audacity版本為2.1.2,由于實在windows下編譯,其源代碼可以從Github上取得 git clone https://github.com/audacity/audacity
。
1. 編譯WxWidgets
Audacity使用wxWidgets作為GUI的框架,Audacity2.1.2需要wxWidgets 3.0.2,所以在編譯Audacity之前需要編譯wxWidgets。wxWidgets的下載地址為http://www.wxwidgets.org/downloads/,選擇3.0.2的源代碼下載。
Audacity在使用wxWidgets時,對其做了一些更改,在編譯wxWidgets前,需要用Audacity更改后的源代碼替換wxWidgets的源代碼。將Audacity源碼下的
audacity-master\win\wxWidgets_additions\wxWidgets-3.0.2
覆蓋wxWidgets源碼下的相同項。在目錄
\wxWidgets-3.0.2\build\msw
下,該目錄下提供了不同版本的visual studio的solution文件,命名就是Visual studio的版本號,這里使用VS2013打開wx_vc12.sln
,使用VS2013進行編譯。由于Audacity使用了wxWidgets的部分庫,不需要編譯整個解決方案。 只需要編譯下面幾個project:
- adv
- base
- core
- html
- net
- qa
- xml
上面的project依賴于下面的project,一起選擇編譯
- wxexpat
- wxjpeg
- wxpng
- wxregex
- wxtiff
- wxzlib
選擇特定的project進行編譯的方法,按住Ctrl
,然后鼠標左鍵選擇project;project選擇完成后,右鍵->生成選擇的內容。
編譯時,注意選擇解決方案的配置項,DLL Debug
對應于Audacity的Debug;DLL Release
對應于Audacity的Release。
在Audacity中是通過環境變量引用wxWidgets庫的,所以編譯完成后,需要為wxWidgets配置環境變量。環境變量的名稱為WXWIN
,其值為@\wxWidgets-3.0.2
,其中@表示wxWidgets源碼所在的路徑。一定要確定設置的環境變量生效,再開始編譯Audacity,不然會出現找不到頭文件以及link的錯誤。
2. 編譯Audacity
編譯好wxWidgets,并設置好環境變量WXWIN
后,就可以打開Audacity的solution進行編譯了。在目錄\audacity-master\win
下,用VS2013打開audacity.sln
,該solution文件就是VS2013版本的,不需要轉換。看Audacity的官方文檔,編譯時還有各種可選項,由于只是想看下Audacity各種音頻操作的源碼,這里也就沒有管那些可選項,打開解決方案后直接選擇生成解決方案,進行編譯。
編譯過程中,如果出現了頭文件找不到,link等錯誤,認真檢查環境變量WXWIN
是否設置正確,是否生效。
如果出現的錯誤是資源文件audacity.rc
,那么莫慌,這表明已經編譯通過了。只是這個資源有一個字符出現了錯誤,雙擊編譯提示的錯誤,找到錯誤的代碼將VALUE "ProductName", "Audacity?
改為VALUE "ProductName", "Audacity"
。 也就是將最后的 問號?
,改為右單引號"
,不知道是源代碼的錯誤還是文本的解析錯誤。
F5就可以進入Audacity的調試了。