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 由多个阶段组成 - 首先配置项目,然后构建项目:
- 配置阶段
cmake <sourcedir> ...
https://cmake.org/cmake/help/v3.22/manual/cmake.1.html#generate-a-project-buildsystem
- 构建阶段
cmake --build <builddir> ...
https://cmake.org/cmake/help/v3.22/manual/cmake.1.html#build-a-project
--target
参数如果用于构建阶段,它对于配置阶段无效,因此你的错误。
使用 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 由多个阶段组成 - 首先配置项目,然后构建项目:
- 配置阶段
cmake <sourcedir> ...
https://cmake.org/cmake/help/v3.22/manual/cmake.1.html#generate-a-project-buildsystem - 构建阶段
cmake --build <builddir> ...
https://cmake.org/cmake/help/v3.22/manual/cmake.1.html#build-a-project
--target
参数如果用于构建阶段,它对于配置阶段无效,因此你的错误。