我正在尝试解决QtCreator错误(https://bugreports.qt.io/browse/QTCREATORBUG-20972),其中QtCreator无法打开CMake项目,因为它试图在/ tmp / RANDOM_PATH / socket中创建套接字文件,而“ RANDOM_PATH”没有存在。
我可以使用以下方法手动重现该问题:
$ / usr / bin / cmake -E服务器--pipe = / tmp / not-existing-path / socket --experimental CMake错误:/ tmp / not-existing-path / socket内部错误:EACCES
https://bugreports.qt.io/browse/QTCREATORBUG-18444中的建议是创建cmake的别名,该别名将报告
“ serverMode”:false
输入命令
cmake -E功能
我的机器(Ubuntu 18.04)上哪个输出:
{“ generators”:[{“ extraGenerators”:[],“ name”:“ Watcom WMake”,“ platformSupport”:false,“ toolsetSupport”:false},{“ extraGenerators”:[“ CodeBlocks”,“ CodeLite”,“ Sublime Text 2”,“ Kate”,“ Eclipse CDT4”,“ KDevelop3”],“名称”:“ Unix Makefiles”,“ platformSupport”:false,“ toolsetSupport”:false},{“ extraGenerators”: [“ CodeBlocks”,“ CodeLite”,“ Sublime Text 2”,“ Kate”,“ Eclipse CDT4”],“名称”:“ Ninja”,“ platformSupport”:false,“ toolsetSupport”:false}],“ serverMode” :true,“ version”:{“ isDirty”:false,“ major”:3,“ minor”:10,“ patch”:2,“ string”:“ 3.10.2”,“ suffix”:“”}}
最简单的方法是什么?
我尝试添加这样的别名:
cmake ='cmake | sed“ s / \” serverMode \“:true / \” serverMode \“:false / g”'
,但是问题在于,“ sed”命令必须在给cmake的参数之后,而不是之前。
答案 0 :(得分:2)
我从该错误报告中看到:
如果要在不使用服务器模式的情况下运行较新的cmake,则需要围绕cmake编写包装程序,以从报告的输出中删除服务器模式支持指示符。
cmake -E capabilities
那将是
cmake() {
if [[ "$*" == "-E capabilities" ]]; then
command cmake "$@" | jq -c 'del(.serverMode)'
else
command cmake "$@"
fi
}
您必须使该脚本成为独立脚本而不是Shell函数。