Antlr4与C ++和CMake

时间:2018-04-26 19:49:08

标签: cmake clion

我正在尝试将antlr4与C ++一起使用。我的根目录中有以下CMakeLists.txt:

System.out.println(repository2.mappedResult);

我或多或少地复制了来自the "official" cmake/antlr tutorial的示例。为简洁起见,我省略了cmake_minimum_required(VERSION 3.10) project(demo VERSION 0.1 DESCRIPTION "demo") include_directories(${CMAKE_CURRENT_BINARY_DIR}) set(CMAKE_CXX_STANDARD 17) ############################################################################# # ANTLR SPECIFIC CMAKE COMMANDS # This is derived from: https://github.com/blorente/antlr-4.7-cpp-cmake-base ############################################################################# # Set the ocation of the JAR. set(ANTLR4CPP_JAR_LOCATION ${CMAKE_SOURCE_DIR}/antlr/jar/antlr.jar) # Add external build for antlrcpp. include (${CMAKE_SOURCE_DIR}/antlr/runtime/ExternalAntlr4Cpp.cmake) # add antrl4cpp artifacts to project environment. include_directories( ${ANTLR4CPP_INCLUDE_DIRS} ) link_directories( ${ANTLR4CPP_LIBS} ) # message(WARNING "Found antlr4cpp libs: ${ANTLR4CPP_LIBS} and includes: ${ANTLR4CPP_INCLUDE_DIRS} ") # Build the lexer/parser .h/.cpp files off the g4 grammar files. antlr4cpp_process_grammar(demo demoparser ${CMAKE_SOURCE_DIR}/grammar/DemoLexer.g4 ${CMAKE_SOURCE_DIR}/grammar/DemoParser.g4) # include the generated files from the grammar/lexer. include_directories(${antlr4cpp_include_dirs_demoparser}) ############################################################################# # Build demo add_executable(demo main.cpp ${antlr4cpp_src_files_demoparser}) # Add dependencies for antlr add_dependencies(demo antlr4cpp antlr4cpp_generation_demoparser) target_link_libraries(demo antlr4-runtime)

的内容

所以文件都是相同的结构,除了jar。我只是将它作为项目文件包含在内,正如您从include (${CMAKE_SOURCE_DIR}/antlr/runtime/ExternalAntlr4Cpp.cmake)命令中看到的那样,它位于我想要的位置。

当我构建它时,我收到此错误:

set(ANTLR4CPP_JAR_LOCATION)

但是,当我查看:dyld: Library not loaded: libantlr4-runtime.4.7.1.dylib Referenced from: /path/to/demo/cmake-build-debug/demo Reason: image not found 时,我看到应使用/path/to/demo/cmake-build-debug/external/antlr4cpp/lib/命令引用的libantlr4-runtime.4.7.1.dylib文件。那里也有静态库。

我错过了什么吗?为什么CMake没有找到它应该的静态或dylib文件?

1 个答案:

答案 0 :(得分:2)

在我开始之前,我没有意识到我跑了brew install antlr4-cpp-runtime。其中将标头安装到路径中。我在我的机器上做了这个,但没有在构建这个项目的任何其他机器上做到这一点。突出的问题是,为什么运行时没有安装是不确定的。但它在安装运行时立即起作用。