项目依赖性
项目的构建和运行可能依赖外部和内部的资源,详见术语说明。
外部依赖项
在构建项目的上下文中,外部依赖项指构建时可能使用的外部依赖,是不由本项目维护和单独发布的依赖项。
关于获取源代码获取构建项目必要的源代码。以下描述其余的必要外部依赖项。
YSLib 项目严格使用 ISO C++ 的子集和特定实现的可选的扩展。关于依赖的语言特性,参见语言使用和实现要求的说明。语言的实现(工具链)是必要的外部依赖项,在确保可参照系统厂商的文档安装,其中受支持的配置在先决条件中说明。
当前在所有受支持的目标平台上,除了(构成语言和运行环境的)系统库外,显示指定的直接外部依赖项在名义上是相同的,但可能使用不同的版本,也不一定按相同的配置构建。实现可能隐含其它的间接外部依赖。
部分外部依赖项是可选的。可选的依赖项仍可能会改变个别开发或运行时需要的其它外部依赖项。
注释 例如,pkg-config 等工具被可选地隐含依赖以便自动配置包。
无论是否显式指定,都可能需要开发者或开发环境的系统管理员干预,以使这些外部依赖项在开发环境中可用。
注释 例如,通过系统包管理器安装工具链和库等构建需要的外部依赖项。
具体外部依赖项的名称可能在不同环境不同。可根据相关来源的文档以及外部依赖项构建的说明确保获取的资源能和以下描述的依赖项准确对应。
除了系统库外,一部分外部依赖项可选或必须使用自行构建的(可能被修改的)版本。这些外部依赖项的修改和构建脚本位于版本库的 3rdparty 目录,默认按原始许可证发行。
YBase 只直接依赖 ISO C++ 标准库。
YFramework 默认依赖经过修改的 FreeType2 和 FreeImage 。其中前者当前仅修改头文件,经过特别处理和官方发布的直接构建的版本二进制兼容,可以被系统库替换。
构建 YFramework 时需包含 3rdparty/include 目录的头文件。Sysroot 安装脚本 Tools/install-sysroot.sh 会复制包括上面的头文件在内的文件。
当前已经使用的详细外部依赖项详见 YSLib 项目文档 doc/Dependencies.txt 。
外部二进制库
当前版本中,源代码中不同宿主平台对应的静态库文件(后缀名为 .a )的目录如下:
YFramework/DS/libYFramework/MinGW32/libYFramework/MinGW64/libYFramework/Android/libYFramework/Linux/lib
其中,使用的 FreeImage 静态库对应 YFramework 的 debug 和非 debug 配置,文件名分别为 libFreeImaged.a 和 libFreeImage.a 。这可在同一个目录树中共存。
(当前 Android 和 Linux 仅支持单一本机体系结构,实际仅测试 Android ARMv7 和 Linux x86_64 。)
自 build 562 起,在 build 885 之前,版本库历史的对应的宿主平台中的静态库位于以下位置:
YFramework/DS/libYFramework/MinGW32/lib-i686YFramework/Android/libYFramework/Linux/lib-x86_64
其中 Android 平台只包括 FreeType2 ,Linux 平台只包括 FreeImage 。其它平台包括 FreeType2 和 FreeImage 库文件。
其它平台中,只有随其它文件的发布版本包含完整更新,否则压缩包中可能只有其中一个库文件。
在 build 562 之前,版本库历史的对应的宿主平台中的静态库位于以下位置:
YFramework/DS/libYFramework/MinGW32/lib
注意 在 V0.6(build 600) 之前版本库历史中包括静态库(.a) 文件,但为减少版本库大小,不再更新且可能移除,使用以下描述的方式安装外部依赖项或自行构建的方式替代。
安装外部依赖项
可使用以下方式安装外部依赖项:
- 参见归档,获取单独或源代码目录集成的已编译的外部依赖项。
- 非正式支持并发布的平台当前不都提供归档。
- 关于正式支持,另见存储库中的
doc/ProjectRules.txt的说明。
- 若在宿主平台使用 Sysroot ,脚本可自动从网络下载安装归档。
- 非宿主平台当前不支持使用 Sysroot 构建。
- 对全新安装,设置环境变量
SS_DirectExtract为非空值可能(很小地)提升性能。
- 参见存储库中的
3rdparty中的内容,手动构建所需的外部依赖项。
关于自行构建外部依赖项的方法,参见构建说明。
内部依赖
项目之间存在依赖,即内部依赖(internal dependency)。
示例项目 YSTest 在 DS 上依赖 YSTest/DS_ARM7 和 YSTest/DS_ARM9 两个项目。
YSTest/DS_ARM9 依赖于 YFramework ;在其它平台直接依赖 YFramework 。
YFramework 依赖 YBase 。
除了 MinGW 外使用 Make 构建。需要添加静态库时,把相应的 .a 文件加入相应的 lib 目录下,否则需要手动修改对应的 Makefile 。
MinGW 使用 Code::Block 或 Sysroot 构建。
生成路径
默认构建的根目录位于版本库下的 build 目录。
注意 本节以下内容不适用于 Sysroot 。
设 $(Platform) 是平台名称,$(Configuration) 是生成配置名称,则各个项目生成的文件和中间文件都在项目的 build/$(Platform)/$(Configuration) 子目录下。修改 Makefile 的配置可以分离生成文件和中间文件的输出路径。
默认生成配置名称可以是 debug 或 release(注意此项的大小写会在 Makefile 中表现出区别)。