外部程序的乱七八糟的参数

Ale*_*kiy 3 powershell

我正在尝试制作一个运行 CMake 的 powershell 脚本。这是我的示例代码(CMAKE_OPTIONS在最后出现):

$CMAKE_OPTIONS = @{
  "DBUILD_opencv_java:BOOL" = "OFF"
  "DBUILD_opencv_python:BOOL" = "OFF"
  "DBUILD_opencv_python2:BOOL" = "OFF"
  "DBUILD_opencv_python3:BOOL" = "OFF"
  "DBUILD_TESTS:BOOL" = "OFF"
  "DBUILD_PERF_TESTS:BOOL" = "OFF"
  "DBUILD_DOCS:BOOL" = "OFF"
  "DBUILD_EXAMPLES:BOOL" = "OFF"
  "DINSTALL_CREATE_DISTRIB:BOOL" = "ON"
}
# ... add something from user input
cmake -G $CMAKE_CONFIG_GENERATOR -DOPENCV_EXTRA_MODULES_PATH=$myRepo/opencv_contrib/modules -DCMAKE_INSTALL_PREFIX=$myRepo/install/$REPO_SOURCE $myRepo/$REPO_SOURCE @CMAKE_OPTIONS
Run Code Online (Sandbox Code Playgroud)

但我收到一个错误:

命令行参数中的解析错误:-DBUILD_opencv_python:BOOL:OFF
应该是:VAR:type=value
CMake 错误:未提供 cmake 脚本。
CMake 错误:处理参数时出现问题。中止。

似乎foo = bar它没有写参数foo:bar。调用外部程序时如何正确设置参数?或者我是否必须使用带有字符串连接和的旧方法&cmake -p "myargs" $CMAKE_OPTIONS_STRING

Ans*_*ers 5

对于外部程序,使用数组,而不是哈希表:

$CMAKE_OPTIONS = @(
  "-DBUILD_opencv_java:BOOL=OFF",
  "-DBUILD_opencv_python:BOOL=OFF",
  "-DBUILD_opencv_python2:BOOL=OFF",
  "-DBUILD_opencv_python3:BOOL=OFF",
  "-DBUILD_TESTS:BOOL=OFF",
  "-DBUILD_PERF_TESTS:BOOL=OFF",
  "-DBUILD_DOCS:BOOL=OFF",
  "-DBUILD_EXAMPLES:BOOL=OFF",
  "-DINSTALL_CREATE_DISTRIB:BOOL=ON"
)

cmake ... @CMAKE_OPTIONS
Run Code Online (Sandbox Code Playgroud)