MSYS2中使用Unix Makefiles生成器的CMake报错求助
解决CMake报错"Could not create named generator Unix"的问题
问题原因
你的命令中生成器名称"Unix Makefiles"的引号在MSYS2命令解析过程中被拆分,导致CMake仅接收到Unix作为生成器名称,而非完整的Unix Makefiles,从而触发报错。这是GitLab CI与MSYS2 shell对嵌套引号的处理逻辑差异导致的。
解决方案
方案1:调整引号嵌套方式
将生成器名称的双引号替换为单引号,同时调整外层引号,确保MSYS2能正确解析完整的生成器名称:
- msys2 -c "export FC=/mingw64/bin/gfortran-win; cmake --loglevel=STATUS -G 'Unix Makefiles' -DCMAKE_BUILD_TYPE=RELEASE -S ../testsimulator"
方案2:用转义符处理双引号
若偏好保留双引号,可在MSYS2命令行中对双引号进行转义:
- msys2 -c 'export FC=/mingw64/bin/gfortran-win; cmake --loglevel=STATUS -G \"Unix Makefiles\" -DCMAKE_BUILD_TYPE=RELEASE -S ../testsimulator'
方案3:确保调用MSYS2版本的CMake
确认GitLab CI的MSYS2环境中,优先使用MSYS2自带的CMake(位于/usr/bin或/mingw64/bin路径下),而非Windows原生CMake。可通过指定路径或调整环境变量PATH实现:
- msys2 -c 'export PATH=/mingw64/bin:$PATH; export FC=/mingw64/bin/gfortran-win; cmake --loglevel=STATUS -G \"Unix Makefiles\" -DCMAKE_BUILD_TYPE=RELEASE -S ../testsimulator'
内容的提问来源于stack exchange,提问作者RUBEN IÑIGO TEJEDOR
相关产品推荐
相关产品推荐

