跳到主要内容

kmpkg_install_msbuild

注意

此函数已被弃用,建议改用 kmpkg_msbuild_install

构建并安装基于 MSBuild 的项目。该函数替代了 kmpkg_build_msbuild()

用法

kmpkg_install_msbuild(
SOURCE_PATH <${SOURCE_PATH}>
PROJECT_SUBPATH <port.sln>
[INCLUDES_SUBPATH <include>]
[LICENSE_SUBPATH <LICENSE>]
[RELEASE_CONFIGURATION <Release>]
[DEBUG_CONFIGURATION <Debug>]
[TARGET <Build>]
[TARGET_PLATFORM_VERSION <10.0.15063.0>]
[PLATFORM <Win32>]
[PLATFORM_TOOLSET <v143>]
[OPTIONS </p:ZLIB_INCLUDE_PATH=X>...]
[OPTIONS_RELEASE </p:ZLIB_LIB=X>...]
[OPTIONS_DEBUG </p:ZLIB_LIB=X>...]
[USE_KMPKG_INTEGRATION]
[ALLOW_ROOT_INCLUDES | REMOVE_ROOT_INCLUDES]
)

参数

SOURCE_PATH

源码树的根目录路径。

由于 MSBuild 采用“源码内构建(in-source builds)”模式,源码树会被复制到临时目录中进行构建。该参数是复制操作的基准路径,同时也是所有 XYZ_SUBPATH 类参数的路径基准。

USE_KMPKG_INTEGRATION

为项目构建应用常规的 integrate install 集成逻辑。

默认情况下,通过该命令构建的项目不会自动链接库文件,也不会自动配置头文件路径。

PROJECT_SUBPATH

相对于 SOURCE_PATH 的解决方案文件(.sln)或项目文件(.vcxproj)的子路径。

LICENSE_SUBPATH

相对于 SOURCE_PATH 的许可证文件子路径。

INCLUDES_SUBPATH

相对于 SOURCE_PATH 的头文件目录子路径。

该参数需指定目录路径,且不能以斜杠 / 结尾。

ALLOW_ROOT_INCLUDES

允许保留根级头文件(例如 include/zlib.h)。

REMOVE_ROOT_INCLUDES

移除根级非头文件(例如 include/Makefile.am)。

SKIP_CLEAN

指定不删除构建过程中生成的中间文件。

使用该选项的端口,后续需手动调用 kmpkg_clean_msbuild() 完成清理。

RELEASE_CONFIGURATION

Release 构建使用的配置(对应 MSBuild 参数 /p:Configuration)。

DEBUG_CONFIGURATION

Debug 构建使用的配置(对应 MSBuild 参数 /p:Configuration)。

TARGET_PLATFORM_VERSION

Windows 目标平台版本(对应 MSBuild 参数 /p:WindowsTargetPlatformVersion)。

TARGET

要构建的 MSBuild 目标(对应参数 /t:<TARGET>)。

PLATFORM

构建使用的平台(对应 MSBuild 参数 /p:Platform)。

该参数默认值会根据 KMPKG_TARGET_ARCHITECTURE 映射为 Visual Studio 创建 .vcxproj 时的默认值:

  • x86Win32
  • x64x64
  • armARM
  • arm64arm64

若传入的是 .sln 解决方案文件(而非 .vcxproj 项目文件),可能需要将该参数设回 ${KMPKG_TARGET_ARCHITECTURE},以匹配解决方案中使用的平台字符串。

PLATFORM_TOOLSET

构建使用的平台工具集(对应 MSBuild 参数 /p:PlatformToolset)。

OPTIONS

传递给所有构建模式(Release/Debug)的额外 MSBuild 选项。

OPTIONS_RELEASE

仅传递给 Release 构建的额外 MSBuild 选项(会追加到 OPTIONS 之后)。

OPTIONS_DEBUG

仅传递给 Debug 构建的额外 MSBuild 选项(会追加到 OPTIONS 之后)。

源码

scripts/cmake/kmpkg_install_msbuild.cmake