我试图CMAKE_CROSSCOMPILING_EMULATOR
在我的 cmake 工具链文件中设置变量,以便它在WINEPATH
环境设置为 的情况下运行 wine WINEPATH="/usr/x86_64-w64-mingw32/lib;/usr/lib/gcc/x86_64-w64-mingw32/9.3-posix"
。
这是我到目前为止所尝试的:
set(CMAKE_CROSSCOMPILING_EMULATOR WINEPATH="/usr/x86_64-w64-mingw32/lib;/usr/lib/gcc/x86_64-w64-mingw32/9.3-posix" wine)
产生
WINEPATH=\"/usr/x86_64-w64-mingw32/lib /usr/lib/gcc/x86_64-w64-mingw32/9.3-posix" wine
它不起作用,因为分号被空格替换,并且初始引号被转义。
我试图逃避分号:
set(CMAKE_CROSSCOMPILING_EMULATOR WINEPATH="/usr/x86_64-w64-mingw32/lib\;/usr/lib/gcc/x86_64-w64-mingw32/9.3-posix" wine)
但这会产生相同的结果。我读到了这个问题:How do I Correctly Pass CMake list (semicolon-sep) of flags to set_target_properties? ,并尝试了这个:
set(CMAKE_CROSSCOMPILING_EMULATOR WINEPATH="/usr/x86_64-w64-mingw32/lib\\\;/usr/lib/gcc/x86_64-w64-mingw32/9.3-posix" wine)
它确实产生了一个分号,但字符串的整个 WINEPATH 部分现在被引用,这无法运行:
"WINEPATH=\"/usr/x86_64-w64-mingw32/lib;/usr/lib/gcc/x86_64-w64-mingw32/9.3-posix\"" wine
所以我的问题是:如何设置 CMAKE_CROSSCOMPILING_EMULATOR 变量以便它产生:
WINEPATH="/usr/x86_64-w64-mingw32/lib;/usr/lib/gcc/x86_64-w64-mingw32/9.3-posix" wine
您需要引用该单词,而不是该单词的一部分。
WINEPATH=
不是一个程序。env
是一个程序。请参阅https://cmake.org/cmake/help/latest/manual/cmake-language.7.html#unquoted-argument周围部分和
note
部分。一种更简单的方法是创建一个(跳转)shell 脚本。