跳到主要内容

kmpkg_cmake_configure

配置基于 CMake 的项目。

用法

kmpkg_cmake_configure(
SOURCE_PATH <source-path>
[DISABLE_PARALLEL_CONFIGURE]
[NO_CHARSET_FLAG]
[WINDOWS_USE_MSBUILD]
[GENERATOR <generator>]
[LOGFILE_BASE <logname-base>]
[OPTIONS
<configure-setting>...]
[OPTIONS_RELEASE
<configure-setting>...]
[OPTIONS_DEBUG
<configure-setting>...]
[MAYBE_UNUSED_VARIABLES
<option-name>...]
)

要使用此函数,你必须依赖辅助端口 kmpkg-cmake

"dependencies": [
{
"name": "kmpkg-cmake",
"host": true
}
]

参数

SOURCE_PATH

指定包含 CMakeLists.txt 文件的目录。

该值通常通过调用源码获取类命令(如 kmpkg_from_github())得到。

DISABLE_PARALLEL_CONFIGURE

禁用并行执行 CMake 配置步骤。

默认情况下,kmpkg 会禁止向源码目录写入文件(通过未公开的 CMake 标志 CMAKE_DISABLE_SOURCE_CHANGES),并并行配置 Release 和 Debug 版本。此标志会指示 kmpkg 允许向源码目录写入,且按顺序执行配置步骤。

NO_CHARSET_FLAG

使用内置 Windows 工具链时,禁用传递 /utf-8 标志。

对于面向 MSVC 编译且自行设置源代码字符集的库,需启用此选项。更多信息可参见 MSVC 关于 /utf-8 的文档。

WINDOWS_USE_MSBUILD

面向 Windows 平台时,使用 MSBuild 而非其他生成器。

默认情况下,kmpkg 倾向于在所有平台上使用 Ninja 作为 CMake 生成器。但在某些边缘场景下,MSBuild 的行为与 Ninja 存在差异。仅当项目需要依赖 MSBuild 才能正确构建时,才应传入此标志。 该标志对 MinGW 目标无效。

GENERATOR

指定要使用的 CMake 生成器。

默认情况下,kmpkg 倾向于在所有平台上使用 Ninja 作为 CMake 生成器;当 Ninja 不可用时,非 Windows 平台会使用 "Unix Makefiles"。 此参数适用于项目专属构建系统依赖特定生成器的边缘场景。

LOGFILE_BASE

配置日志文件的备用根名称。

默认值为 config-${TARGET_TRIPLET}。该名称不应包含任何路径分隔符。日志文件将按 ${CURRENT_BUILDTREES_DIR}/${LOGFILE_BASE}-<suffix>.log 模式生成。

OPTIONS

配置阶段传递给 CMake 的额外选项。

另请参见隐式选项

OPTIONS_RELEASE

仅在 Release 版本配置阶段传递给 CMake 的额外选项。

这些选项会附加在 OPTIONS 之后。

OPTIONS_DEBUG

仅在 Debug 版本配置阶段传递给 CMake 的额外选项。

这些选项会附加在 OPTIONS 之后。

MAYBE_UNUSED_VARIABLES

配置步骤中可能未被读取的 CMake 选项列表。

对于不在此列表中且未在 CMake 配置阶段被读取的选项,kmpkg 会发出警告。此列表应包含仅在特定配置下(例如 KMPKG_LIBRARY_LINKAGE"static" 或某些功能启用时)才会被读取的选项。

隐式选项

此命令会自动向 CMake 传递多个选项:

此命令还会传递 KMPKG_CMAKE_CONFIGURE_OPTIONS 中的所有选项,以及 KMPKG_CMAKE_CONFIGURE_OPTIONS_RELEASEKMPKG_CMAKE_CONFIGURE_OPTIONS_DEBUG 中对应配置的专属选项。

最后,还会传入一些额外的内部选项(均以 KMPKG_ 为前缀),这些选项不应被外部依赖。

示例

kmpkg_from_github(OUT_SOURCE_PATH source_path ...)
kmpkg_cmake_configure(
SOURCE_PATH "${source_path}"
OPTIONS
-DBUILD_EXAMPLES=OFF
-DBUILD_TESTS=OFF
)
kmpkg_cmake_install()

在 kumose/kmpkg 中搜索示例

备注

此命令替代了 kmpkg_configure_cmake()

源码

ports/kmpkg-cmake/kmpkg_cmake_configure.cmake