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 传递多个选项:
CMAKE_BUILD_TYPE会根据实际情况设为"Release"或"Debug";BUILD_SHARED_LIBS会根据KMPKG_LIBRARY_LINKAGE的值设置;CMAKE_INSTALL_PREFIX会根据配置情况设为${CURRENT_PACKAGES_DIR}或${CURRENT_PACKAGES_DIR}/debug;CMAKE_TOOLCHAIN_FILE和KMPKG_CHAINLOAD_TOOLCHAIN_FILE会被设置,以引入 kmpkg 工具链文件和三元组工具链文件;CMAKE_SYSTEM_NAME设为${KMPKG_CMAKE_SYSTEM_NAME};若KMPKG_CMAKE_SYSTEM_NAME未设置,则默认为"Windows";- 若
KMPKG_CMAKE_SYSTEM_VERSION已设置,CMAKE_SYSTEM_VERSION会设为该值; CMAKE_EXPORT_NO_PACKAGE_REGISTRY=ON;CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY=ON;CMAKE_FIND_PACKAGE_NO_SYSTEM_PACKAGE_REGISTRY=ON;CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP=TRUE;CMAKE_ERROR_ON_ABSOLUTE_INSTALL_DESTINATION=ON;CMAKE_INSTALL_LIBDIR:STRING=lib;CMAKE_INSTALL_BINDIR:STRING=bin;FETCHCONTENT_FULLY_DISCONNECTED=ON(自 2022-10-30 版本起)。
此命令还会传递 KMPKG_CMAKE_CONFIGURE_OPTIONS 中的所有选项,以及 KMPKG_CMAKE_CONFIGURE_OPTIONS_RELEASE 或 KMPKG_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()
备注
此命令替代了 kmpkg_configure_cmake()。