我的配置是:
ubuntu 21.04
gcc 11
qt 5.15.2
Run Code Online (Sandbox Code Playgroud)
和这样的错误消息:
AutoMoc subprocess error
------------------------
The moc process failed to compile
"SRC:/src/Layers/ViewLayer/Process/NearFieldProcessUtil.h"
into
"SRC:/build/MTESS_autogen/MLM4FWGUYC/moc_NearFieldProcessUtil.cpp"
Command
-------
/usr/lib/qt5/bin/moc -DJSON_DIAGNOSTICS=0 -DJSON_USE_IMPLICIT_CONVERSIONS=1 "-DvtkRenderingCore_AUTOINIT_INCLUDE=\"/home/alex/workspace/mtess/MTESS/build/CMakeFiles/vtkModuleAutoInit_be7301261a49b13d6a9b1d9e110eacd8.h\"" -I/home/alex/workspace/mtess/MTESS/src -I/home/alex/workspace/mtess/MTESS/vendor/ProjectStructure -I/home/alex/workspace/mtess/MTESS/vendor/imgui -I/home/alex/workspace/mtess/MTESS/vendor/imgui/imgui -I/usr/include/x86_64-linux-gnu/qt5 -I/usr/local/qwt-6.2.0/include -I/usr/local/include/opencascade -I/lib -I/usr/local/include -I/usr/include/vtk-9.0 -I/usr/include/c++/10 -I/usr/include -I/usr/include/c++/11 -I/usr/include/x86_64-linux-gnu/c++/11 -I/usr/include/c++/11/backward -I/usr/lib/llvm-14/lib/clang/14.0.0/include -I/usr/include/x86_64-linux-gnu --include /home/alex/workspace/mtess/MTESS/build/MTESS_autogen/moc_predefs.h --output-dep-file -o /home/alex/workspace/mtess/MTESS/build/MTESS_autogen/MLM4FWGUYC/moc_NearFieldProcessUtil.cpp /home/alex/workspace/mtess/MTESS/src/Layers/ViewLayer/Process/NearFieldProcessUtil.h
Output
------
usr/include/c++/10/bits/fs_fwd.:39: Parse error at "std"
Run Code Online (Sandbox Code Playgroud)
相同的代码库在 Windows 中使用qmake成功编译,我正在将编译方法转换为cmake,这不应该是代码问题,而是 cmake 配置或工具链兼容性问题。我的问题是:
如何让cmake使用特定编译器的唯一包含的?
正如你所看到的,似乎 3 个包含的 gcc-10、gcc-11、clang-14 都被使用了。我尝试卸载 gcc-10,但 clang-14 依赖于它,并且我使用了 update- alternatives指定 gcc、g++、clang 和 clang++。
如何调试这种标准库moc解析问题?
我以前遇到过类似的MOC解析问题,不是在usr/include/c++/10/bits/fs_fwd.:39上,而是在另一个gcc头文件上,经过一些卸载/安装后,这个问题消失了,但实际上我不知道怎么消失了。这种问题可能有点普遍,有什么方法可以解决它们吗?