I'm trying to make a powershell script that runs CMake. Here is my sample code (splatting CMAKE_OPTIONS at the end):
$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
But I get an error:
Parse error in command line argument: -DBUILD_opencv_python:BOOL:OFF
Should be: VAR:type=value
CMake Error: No cmake script provided.
CMake Error: Problem processing arguments. Aborting.
It seems that instead of writing arguments foo = bar it does foo:bar.
How to splat arguments correctly when calling external program? Or do I have to use an old approach with string concatenation and &cmake -p "myargs" $CMAKE_OPTIONS_STRING?
For external programs use an array, not a hashtable:
$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
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With