antlr4 c++ не могу скомпилировать пример
Я даже не знаю, что конкретно еще надо указать, но компилятор не видит файлы, лежащие в папке exprlib. Я уже пробовал переместить файлы в папку рядом с main.cpp. Эти файлы генерируются через antlr4 Expr.g4 -Dlanguage=Cpp -o lib -visitor -no-listener и если с ошибками линковки самого antlr я разобрался, то тут я не знаю, что от меня требуется
Флаги gcc:
-I/usr/local/include \
-I/usr/local/include/antlr4-runtime \
-I/usr/include/ \
-I/usr/include/antlr4-runtime/ \
-lantlr4-runtime -L/home/kotaz/prj/lang/lib
Код main.cpp
#include <iostream>
#include <antlr4-runtime.h>
#include "exprlib/ExprLexer.h"
#include "exprlib/ExprParser.h"
using namespace antlr4;
int main(int argc, const char* argv[]) {
std::ifstream stream;
stream.open("input.code");
ANTLRInputStream input(stream);
ExprLexer lexer(&input);
CommonTokenStream tokens(&lexer);
ExprParser parser(&tokens);
return 0;
}
Ошибка
/usr/include/antlr4-runtime/atn/ATNState.h:73:26: предупреждение: атрибуты типов игнорируются, если тип уже определен [-Wattributes]
73 | class ANTLR4CPP_PUBLIC ATN;
| ^~~
/usr/bin/ld: /tmp/ccRMtxWe.o: в функции «main»:
main.cpp:(.text+0x83): неопределённая ссылка на «ExprLexer::ExprLexer(antlr4::CharStream*)»
/usr/bin/ld: main.cpp:(.text+0xb9): неопределённая ссылка на «ExprParser::ExprParser(antlr4::TokenStream*)»
/usr/bin/ld: main.cpp:(.text+0xcd): неопределённая ссылка на «ExprParser::~ExprParser()»
/usr/bin/ld: main.cpp:(.text+0xeb): неопределённая ссылка на «ExprLexer::~ExprLexer()»
/usr/bin/ld: main.cpp:(.text+0x142): неопределённая ссылка на «ExprLexer::~ExprLexer()»
collect2: ошибка: выполнение ld завершилось с кодом возврата 1