g++ , msvc 2015,2017System: Windows
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了g++ , msvc 2015,2017System: Windows相关的知识,希望对你有一定的参考价值。
如上图所示,我试图用cmake在QT Creator中编译一个QT5项目,并希望添加antlr包。
信息。Qt 5.12.8, Antlr 4.8, 编译器尝试过:mingw gcc Linux 都不能用。
为了包含Antlr 4.8,我使用提供的CPP包从源码中构建Antlr。
这是我正在做的项目。https:/github.comMrDiverArmSimulatortreeArmParsersrcasmeditorAsmEditor。
我将 antlr4 包括在下面 https:/github.comMrDiverArmSimulatorblobArmParsersrcasmeditorAsmEditorCMakeLists.txt#L14-L21。
通常情况下,当我用它编译一些东西时,它工作得非常好。但这次当我试图包含antlr的头文件时,我得到了这样的错误信息。
FAILED: CMakeFiles/AsmEditor.dir/managers/processormanager.cpp.obj
H:ProgrammeQTToolsmingw730_64ing++.exe -DANTLR4CPP_STATIC -DQT_CORE_LIB -DQT_GUI_LIB -DQT_NO_DEBUG -DQT_WIDGETS_LIB -I. -IH:/MyStuff/PrivateProjects/CPPProjects/ArmSimulator/src/asmeditor/AsmEditor -IAsmEditor_autogen/include -Iantlr4_runtime/src/antlr4_runtime/runtime/Cpp/runtime/src -IH:/MyStuff/PrivateProjects/CPPProjects/ArmSimulator/src/asmeditor/AsmEditor/armparser/assembler -IH:/MyStuff/PrivateProjects/CPPProjects/ArmSimulator/src/asmeditor/AsmEditor/armparser/walker -IH:/MyStuff/PrivateProjects/CPPProjects/ArmSimulator/src/asmeditor/AsmEditor/codearea -IH:/MyStuff/PrivateProjects/CPPProjects/ArmSimulator/src/asmeditor/AsmEditor/managers -IH:/MyStuff/PrivateProjects/CPPProjects/ArmSimulator/src/asmeditor/AsmEditor/armparser -isystem H:/Programme/QT/5.12.8/mingw73_64/include -isystem H:/Programme/QT/5.12.8/mingw73_64/include/QtWidgets -isystem H:/Programme/QT/5.12.8/mingw73_64/include/QtGui -isystem H:/Programme/QT/5.12.8/mingw73_64/include/QtANGLE -isystem H:/Programme/QT/5.12.8/mingw73_64/include/QtCore -isystem H:/Programme/QT/5.12.8/mingw73_64/./mkspecs/win32-g++ -O3 -DNDEBUG -std=gnu++11 -MD -MT CMakeFiles/AsmEditor.dir/managers/processormanager.cpp.obj -MF CMakeFilesAsmEditor.dirmanagersprocessormanager.cpp.obj.d -o CMakeFiles/AsmEditor.dir/managers/processormanager.cpp.obj -c H:/MyStuff/PrivateProjects/CPPProjects/ArmSimulator/src/asmeditor/AsmEditor/managers/processormanager.cpp
In file included from antlr4_runtime/src/antlr4_runtime/runtime/Cpp/runtime/src/antlr4-runtime.h:31:0,
from H:/MyStuff/PrivateProjects/CPPProjects/ArmSimulator/src/asmeditor/AsmEditor/managers/processormanager.cpp:2:
antlr4_runtime/src/antlr4_runtime/runtime/Cpp/runtime/src/Lexer.h:116:46: error: invalid declarator before 'newToken'
virtual void emit(std::unique_ptr<Token> newToken);
^~~~~~~~
antlr4_runtime/src/antlr4_runtime/runtime/Cpp/runtime/src/Lexer.h:116:46: error: expected ')' before 'newToken'
antlr4_runtime/src/antlr4_runtime/runtime/Cpp/runtime/src/Lexer.h:123:25: error: expected unqualified-id before ')' token
virtual Token* emit();
^
[30/31 0.6/sec] Building CXX object CMakeFiles/AsmEditor.dir/armparser/assembler/ARMParser.cpp.obj
ninja: build stopped: subcommand failed.
18:59:55: The process "C:msys64mingw64incmake.exe" exited with code 1.
Error while building/deploying project AsmEditor (kit: Desktop Qt 5.12.8 MinGW 64-bit)
When executing step "CMake Build"
感兴趣的文件。https:/github.comMrDiverArmSimulatorblobArmParsersrcasmeditorAsmEditormanagersprocessormanager.cpp。
似乎很像它找不到。std::unique_ptr<Token>
但我不能改变很多,因为这些都是antlr的源头,而且它们确实在工作。
所以我真的不知道该从哪里寻找问题。如果我在设置中选择它为目标,库本身的编译也很好。
我尝试了什么。
- 在外面编译antlr库,然后把它链接到cmake文件中。
- 改变
Lexer.h
锉#include <memory>
. - 在没有QT Creator的情况下编译QT项目(导致大量的错误,因为我无法让QT的链接工作)
- 在项目之外编译所有与Antlr相关的文件(没有QT也能完美工作,但不是我真正需要的)。
- 使用不同的编译器和不同的系统。
- 搜索问题与
moc
但似乎并不影响它。但我怀疑我在moc上看的不够仔细。
g++ , msvc 2015,2017 ...
The problem is that Antlr has methods like "emit" that conflict with the Qt reserved word "emit". The solution is to disable the flag "no_keywords" (in qmake add
, and in CMake add. Then you must make the following conversions: 如果我不能用普通的cmake编译的话,那就太麻烦了。CONFIG += no_keywords
谢谢你的帮助。add_definitions(-DQT_NO_KEYWORDS)
如上图所示,我试图在QT Creator中用cmake编译一个QT5项目,并想添加antlr包。信息。Qt 5.12.8, Antlr 4.8, 编译器尝试:mingw gcc。
以上是关于g++ , msvc 2015,2017System: Windows的主要内容,如果未能解决你的问题,请参考以下文章
使用 MSVC2015 在 Windows 上进行 clang-tidy
Qt Creator 4.3.1 未检测到 MSVC 2015 编译器
如何在 Qt creator 中更改/配置所需的编译器?即在 MSVC/Mingw 或 g++/clang++ 之间切换
使用 msvc 2015 编译的 Windows 桌面应用程序的便携式安装
关于VS2017+Qt5.6.3(msvc2015_64)联合编程Qt project settings界面没有ok,cancel选项的问题