构建插件
build
命令将使用之前生成的解决方案,来编译插件并将二进制文件复制到 Wwise 安装目录(若工程文件夹中没有所述解决方案,请参阅 使用 Premake 配置工程 章节)。 该命令必须从工程文件夹内调用,并且需要一系列参数来完成相应的操作。下面是个典型的 build 命令:
python "%WWISEROOT%/Scripts/Build/Plugins/wp.py" build -c Release -x x64 -t vc160 Authoring
藉此,可在 release 模式 (-c
flag) 下针对当前操作系统上的设计工具平台构建基于 x64 架构 (-x
flag) 和 MSVC 工具集 vc160 (-t
flag) 的工程。如需详细了解相关参数的可能值,请查看 build
命令的帮助信息。
python "%WWISEROOT%/Scripts/Build/Plugins/wp.py" build -h
二进制文件会直接输出到 Wwise 安装目录中以供稍后测试:
- For the SoundEngine plug-in part, go to
%WWISEROOT%/SDK/{Platform}/{Config}/{bin,lib}
.
- For the Authoring plug-in part on Windows, go to
%WWISEROOT%/Authoring/x64/{Config}/bin/Plugins
.
- For the Authoring plug-in part on macOS, go to
%WWISEROOT%/Authoring/macosx_gmake/{Config}/bin/Plugins
.
- For the Authoring plug-in part on Linux, go to
%WWISEROOT%/Authoring/linux_gmake/{Config}/bin/Plugins
.
- For the Documentation plug-in part, go to
%WWISEROOT%/Authoring/Data/Plugins/{PluginName}/Html
.
| 备注: 有些平台会在执行 build 命令的过程中为多个工具链版本构建插件,包括为每个工程构建调用设置独有的环境变量。For each supported platform, the %WWISEROOT%/Scripts/ToolchainSetup/{Platform} directory, if it exists, contains two files:
ToolchainVers.txt , which specifies the list of supported toolchain versions for the platform
GetToolchainEnv.py , which determines the environment variables to be applied during the build process, given one of the values in ToolchainVers.txt as an argument
If desired, it is also possible to override either of these when executing the build command in wp.py, by specifying –toolchain-vers {file} or –toolchain-env-script {file} on the command line. 在要使用自己的构建结构或独立于 Wwise SDK 为工具链发布插件时,有可能需要这样做。
wp.py 生成的工程还会基于定义的环境针对工程编译所对应的工具链版本自动调节构建输出文件夹。有关如何根据各个平台加以确定的详细信息,请参阅对应的“有关平台的特定信息”页面。
|
添加目标平台
在开发插件的过程中,随时都可以添加目标平台。为此,可使用 premake 和 build 来添加所需平台。至少要构建一个平台,对 Authoring
来说,很可能还要构建 Documentation
。藉此,可安装插件属性相关文档,并在选中属性时在 Property Help 面板中显示帮助信息。
比如,通过在命令行中运行以下代码,来添加 Windows_vc160 和 Authoring 平台:
python "%WWISEROOT%/Scripts/Build/Plugins/wp.py" premake Windows_vc160
python "%WWISEROOT%/Scripts/Build/Plugins/wp.py" premake Authoring
python "%WWISEROOT%/Scripts/Build/Plugins/wp.py" build Windows_vc160 -c Release -x x64
python "%WWISEROOT%/Scripts/Build/Plugins/wp.py" build Authoring -c Release -x x64 -t vc160
python "%WWISEROOT%/Scripts/Build/Plugins/wp.py" build Documentation
使用挂钩执行构建后操作
在构建特定目标后,经常要执行各种自定义操作。为此,可将 –build-hooks-file
标记添加到 build
命令并指定相应的 Python 文件。此文件必须由 User 自行创建,它并不包含在 new
命令生成的初始框架中。这里的示例展示了 post-build 挂钩文件所含的内容:
def postbuild(**kwargs):
WWISE_ROOT = kwargs.get("wwise_root")
PROJECT_ROOT = kwargs.get("project_root")
platform = kwargs.get("platform")
arch = kwargs.get("arch")
config = kwargs.get("config")
这里的示例会针对 Windows_vc160 和 Authoring 平台调用 post-build 挂钩:
python "%WWISEROOT%/Scripts/Build/Plugins/wp.py" build Windows_vc160 -c Release -x x64 --build-hooks-file=build_hooks.py
python "%WWISEROOT%/Scripts/Build/Plugins/wp.py" build Authoring -c Release -x x64 -t vc160 --build-hooks-file=build_hooks.py
python "%WWISEROOT%/Scripts/Build/Plugins/wp.py" build Documentation
build_hooks.py 文件必须存放在插件的根目录下。
这里的示例会将 DLL 文件 (library.dll) 从插件目录复制到 Wwise 安装目录:
import os
import shutil
import sys
def postbuild(**kwargs):
WWISE_ROOT = kwargs.get("wwise_root")
PROJECT_ROOT = kwargs.get("project_root")
platform = kwargs.get("platform")
arch = kwargs.get("arch")
config = kwargs.get("config")
platform_files = {}
if platform == "Authoring_Windows":
platform_files["Authoring/x64/{}/bin/plugins".format(config)] = [
"Prebuilt/x64/{}/library.dll".format(config)
]
elif platform == "Windows_vc160":
platform_files["SDK/{}/{}/bin".format(arch, config)] = [
"Prebuilt/{}/{}/library.dll".format(arch, config)
]
for dest, files in platform_files.items():
dest = os.path.join(WWISE_ROOT, dest)
for file in files:
file = os.path.join(PROJECT_ROOT, file)
try:
shutil.copy(file, dest)
print("POSTBUILD HOOK: Copied {} to {}".format(file, dest))
except IOError:
sys.stderr.write("POSTBUILD HOOK: Failed to copy {} to {}\n".format(file, dest))
在完成插件的开发后,还要以 Audiokinetic Launcher 可直接安装的格式来打包工程。 有关更多详细信息,请参阅 将插件打包以便用在 Audiokinetic Launcher 中 章节。
下一章节:将插件打包以便用在 Audiokinetic Launcher 中