vcpkg准备ANTLR项目

XiLaiTL大约 1 分钟

vcpkg准备ANTLR项目

环境准备

Download ANTLRopen in new window

https://www.antlr.org/download/antlr-4.11.1-complete.jaropen in new window

vcpkg integrate install

vcpkg integrate project

vcpkg install antlr4:x64-windows

vcpkg install llvm:x64-window //下载llvm需要准备170G的磁盘空间!!

项目-属性-生成事件-生成前事件-命令行

java -jar antlr-4.11.1-complete.jar -Dlanguage=Cpp -visitor -package langtest NC.g4

或者添加一个compile-grammar.shopen in new window

cd antlr/bin
java -jar antlr-4.11.1-complete.jar \
    -Dlanguage=Cpp \
    -visitor \
    -package perfect_complex \
    -o "../../" \
    "../Complex.g4" 

项目-属性-C/C++-扫描源以查找依赖关系【是】将包含转换为导入【否】

由于文件位置问题,修改一下添加一个头文件,这样自动生成的代码运行就不会出错了。

如果是多文件夹的话,也得先添加一个文件到项目文件夹下,另一个文件在生成的parser文件那边。

//antlr4-runtime

#pragma once

#include "antlr4-runtime/antlr4-runtime.h"

namespace antlr4::internal{
	using OnceFlag = std::once_flag; //这个也可以不要
	using std::call_once;
}

如果要使用manifest:

vcpkg.json

{
  "name": "langtest",
  "version": "0.0.1",
  "dependencies": [
    "antlr4",
    "llvm"
  ]
}

在项目-属性-vcpkg中打开use manifest,这样就可以将内容集成到项目中了

其他方法

如果使用自己编译的antlr的话,需要用VS打开整个antlr/runtime当成一个cmake项目。如果只是打开sln则不知道要不要引入其他的东西。

上次编辑于:
贡献者: XiLaiTL