7

my configuration is:

ubuntu 21.04
gcc 11
qt 5.15.2

and error message like this:

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"

The same codebase compiled successfully in windows with qmake,and I am converting compilaltion approch to cmake,and it shouldn't be a code problem,but a cmake configuration or tool chain compatibility problem.My questions are:

  1. How to let cmake use the only one includes of specific compiler?

    As you can see,it seems like 3 includes of gcc-10,gcc-11,clang-14 are all being used.I have tried to uninstalled gcc-10 but clang-14 depends on it,and I have used update-alternatives to specify gcc,g++,clang and clang++.

  2. How to debug this kind of standard library moc parsing problem?

    I have met the similar MOC parsing problem before,not on usr/include/c++/10/bits/fs_fwd.:39,but another gcc header file,after some uninstalling/installing,that problem gone,but actually I don't know how is gone.This type of problem maybe kind of general,any method to troubleshoot them?

1 Answer 1

7

I hit this issue too. This seems to be an open bug in moc that is triggered when the filesystem header is included before any Qt headers.

Moving #include <filesystem> below #include <QApplication> fixed the problem for me.

Sign up to request clarification or add additional context in comments.

1 Comment

I just hit a very similar issue with <concepts> while migrating a Qt5 project to C++20: usr/include/c++/10/concept:46: Parse error at "std" ¯_(ツ)_/¯ Moving Qt includes above all the std ones has resolved the issue as well.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.