Celestia/開發/Win32 平臺
使用 Windows-32 軟體包的 Celestia 開發選項
Celestia 的原始碼在 SourceForge 上託管的 Subversion (SVN) 儲存庫中可用。
Windows 上有幾個 Subversion 客戶端可用。一個非常流行的客戶端是 TortoiseSVN,這是一個 Windows 外殼擴充套件,允許您直接在 Windows 資源管理器中使用 SVN 命令。命令列版本可透過 Cygwin 獲得。
要使用命令列客戶端獲取最新的 Celestia 原始碼,請 cd 到所需的目錄,然後發出命令
svn co https://celestia.svn.sourceforge.net/svnroot/celestia/trunk
對於 Tortoise SVN,從 Windows 資源管理器彈出選單中選擇“檢出”,然後輸入以下 URL
https://celestia.svn.sourceforge.net/svnroot/celestia/trunk
為了構建 Windows 軟體,您需要一個 SDK(軟體開發工具包)和一個編譯器。SDK 提供構建特定版本的 Windows 所需的庫和包含檔案。編譯器將文字檔案轉換為二進位制程式,並將它們連結到 SDK 庫。Microsoft 提供了其 SDK 和編譯器的免費版本,儘管功能有限,但為了鼓勵開發用於其作業系統的軟體。他們還出售商業軟體開發組織使用的增強版。
目前,Subversion 儲存庫中沒有檢查 Visual Studio 2010 解決方案。如果您有 VS2010,除了針對以前版本的 Visual Studio 列出的步驟外,您還需要執行幾個不受支援的步驟。
- 首先,VS2010 會將以前版本的專案檔案轉換為 VS2010 格式。這些轉換後的版本將具有不匹配的 $(TargetFile) 和連結器輸出檔案定義。這些將必須手動協調。一種選擇是將“常規”專案屬性“目標名稱”設定為“$(ProjectName)”,並將連結器屬性“輸出檔案”設定為“$(OutDir)$(TargetName)$(TargetExt)”。這將允許您構建,但它將無法執行。
- 其次,也是最重要的是,儲存庫中的靜態庫 zlib 和 libpng 編譯為僅與 VS2008 的可再發行執行時 dll(即 msvcm90.dll、msvcp90.dll 和 msvcr90.dll)一起使用。這些執行時與 VS2010 不相容,因此您必須獲得與 2010 相容的 zlib 和 libpng(以及除錯版本)。最簡單的方法可能是從 sourceforge 獲取原始碼,自己構建它們,將新的庫放到 windows\lib\x86 中,並更改連結器的“附加依賴項”屬性中的條目。
- 最後,您必須確保 celestia.exe 和 windows\dll 中的 dll 被複制到 $(ProjectDir) 中,並且除錯“命令”屬性設定為“$(ProjectDir)\$(TargetFileName)”,並且“工作目錄”屬性設定為 $(ProjectDir)。
您可能需要執行其他步驟,具體取決於您獲得的 zlib 和 libpng 的版本。
2007 年 12 月,Microsoft 釋出了 Visual C++ 2008 Express Edition。從 Celestia 1.6.0 版本開始,這是構建 Celestia 的唯一推薦的編譯器版本。請注意,Visual C++ 2008 無法在 Windows 98 上執行。*僅為此原因*,您可能需要使用 Visual Studio 2005。如果您使用的是 Windows 2000、XP、Vista 或 7,則使用 Visual C++ 2008 進行編譯要容易得多。
- 如果您還沒有 Microsoft Visual C++ 2008,您可以從這裡免費下載:
使用 Web 安裝程式安裝 VS C++ 2008 SP1 時,它也會自動下載並安裝所有正確的 SDK 庫。這在 Windows XP、32 位和 Windows 7、64 位下都會發生。SDK 無需單獨下載或安裝。
- 如果您還需要 Windows SDK,它可以從 Microsoft 免費下載:
這些說明適用於 Windows XP 和 Windows 7。
此過程假定您已按照上述步驟操作,從 SVN 中檢出原始碼,並安裝了 Visual C++ 編譯器和 Windows SDK。
- 將 iconv.dll、intl.dll 和 lua5.1.dll 從 trunk\celestia\windows\dll\x86 複製到 trunk\celestia
- Celestia 是一個 32 位 x86 應用程式。沒有 x64 庫。
- 在 Microsoft Visual C++.Net 2008 中開啟 celestia.sln 並允許更新程式工作。
- 換句話說,在 trunk\celestia 目錄中選擇(雙擊)celestia.sln
- 將構建型別設定為“Release”。(從 svn 提供的專案將其設定為“Debug”)
- 具體來說,在 VisualStudio 視窗頂部的圖示行中,最初顯示“Debug”的位置,開啟其下拉選單並選擇“Release”
- 構建!
- 開啟“構建”選單並選擇“重新生成解決方案”
僅推薦給 Windows 98/ME 使用者,Visual C++ 2008 在這些系統上不受支援。如果您執行的是 XP、Vista 或 7,您應該使用上一節中描述的簡單得多的過程。
- Windows 平臺 SDK:Web 安裝
- Windows 平臺 SDK:磁碟映像
- Visual Studio 2005 Express C++:Web 安裝
- Visual Studio 2005 Express C++:磁碟映像
Celestia 儲存庫中的庫是使用 VS2008 構建的,在 Windows 98/ME 上將無法使用
適用於 Visual Studio 2005 Express 的 Celestia 庫
- 截至 2007 年 10 月,請使用
- cspice.lib
- winbuild-2.zip
- winlibs-2.zip
- 自建立 winbuild-2.zip 以來,已向 Celestia 的 svn 儲存庫添加了幾個原始碼檔案。如果您使用 makerelease.bat 從當前 Subversion 儲存庫構建,請將以下行插入 celestia/src/celengine/engine.mak 的 OBJS 部分
$(INTDIR)\axisarrow.obj \
$(INTDIR)\customrotation.obj \
$(INTDIR)\frametree.obj \
$(INTDIR)\precession.obj \
$(INTDIR)\scriptrotation.obj \
$(INTDIR)\timeline.obj \
$(INTDIR)\timelinephase.obj \
- SPICE 包含檔案包含在 winlibs-2.zip 中。
- 這些 Zip 檔案不包含任何二進位制 DLL(動態連結庫),因此您需要從預編譯的 Celestia 安裝套件中獲取它們。截至 2008 年 1 月 26 日,請使用 Celestia v1.5.0 中包含的 DLL。Celestia v1.5.0 的官方版本可在 SourceForge 上獲得。
Windows Celestia 發行套件中包含的 Celestia 版本使用 makerelease.bat 指令碼編譯。較舊的 VS2003 版本的構建指令碼仍然位於 SourceForge 上的 cvs 存檔中。針對 VS2005/VS2008 更新的 makefile 和 .bat 指令碼包含在 winbuild-2.zip [備註:winbuild-2.zip 中沒有 makerelease.bat] 中,該檔案位於上面顯示的 VS2005 winbuild 目錄中。
不要忘記,您必須根據您的特定開發環境配置 PATH、LIB 和 INCLUDE 環境變數,以便構建指令碼可以找到 Visual Studio 和 Celestia 程式、包含檔案和庫。
以下是一個用於定義搜尋列表的 .BAT 指令碼示例。它可能不適用於您:您可能將檔案放在不同的目錄中。請根據您的情況進行更改。
Set INCLUDE=C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\include;%INCLUDE% Set INCLUDE=C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\include\mfc;%INCLUDE% Set INCLUDE=C:\Program Files\Microsoft Visual Studio 8\VC\include;%INCLUDE% Set INCLUDE=C:\cvs\Celestia\celestia\inc;%INCLUDE% Set PATH=C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Bin;%PATH% Set PATH=C:\Program Files\Microsoft Visual Studio 8\Common7\IDE;%PATH% Set PATH=C:\Program Files\Microsoft Visual Studio 8\VC\bin;%PATH% Set LIB=C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Lib;%LIB% Set LIB=C:\Program Files\Microsoft Visual Studio 8\VC\lib;%LIB% Set LIB=C:\cvs\Celestia\celestia\lib;%LIB%