CMake 的 --target 参数发生了什么变化?

What happened to CMake's --target argument?

使用 CMake 版本 3.19.2,我可以使用 --target 参数来构建特定目标,而不是 all。 例如 --target tests 构建测试。 但是,对于 CMake 3.22.1,我收到这样的错误:

CMake Error: Unknown argument --target
CMake Error: Run 'cmake --help' for all supported options.

您可以在这里查看CMake的手册: https://cmake.org/cmake/help/latest/manual/cmake.1.html
(有版本选择下拉列表)

它描述了 --target 的论点,而且它看起来与之前的内容没有任何不同。尽管如此,从 3.19.2 切换到 3.22.1 后,它不允许我使用 --target.

@EDIT 感谢您的反馈,这是我使用的:

cmake -G Ninja -DCROSS_COMPILER_PREFIX=<some_prefix> -Dsomeothervariables=1 --target tests $directory_with_cmake_project

它适用于 3.19.2,但与 cmake 3.22.1 执行相同的操作会导致错误。 我希望提供 -G Ninja、变量、目标目录和 --target 的顺序很重要,但我还没有设法让它以我能想到的任何顺序工作。

CMake 打印此消息,如果您没有通过首先传递 --build <some dir> 指定要构建的目录。 (--target 选项仅在本使用版本的 cmake 命令行工具中提及,参见 the documentation。)

错误

cmake --target foo
CMake Error: Unknown argument --target
CMake Error: Run 'cmake --help' for all supported options.

正确
(假设在当前工作目录的子目录 build 中包含一个已配置的目标为 foo 的 cmake 项目)。

cmake --build build --target foo

CMake 由多个阶段组成 - 首先配置项目,然后构建项目:

--target参数如果用于构建阶段,它对于配置阶段无效,因此你的错误。