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%