gpt4 book ai didi

cmake - Antlr4 与 C++ 和 CMake

转载 作者:行者123 更新时间:2023-12-04 12:39:14 39 4
gpt4 key购买 nike

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

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)

我或多或少地复制了以下示例: the "official" cmake/antlr tutorial .为简洁起见,我省略了 include (${CMAKE_SOURCE_DIR}/antlr/runtime/ExternalAntlr4Cpp.cmake) 的内容

因此,除了 jar 文件之外,所有文件都具有相同的结构。我只是将它作为项目文件包含进来,正如您从 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应该使用 target_link_libraries(demo antlr4-runtime) 引用的文件命令。那里也有静态库。

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

最佳答案

我没有意识到,就在我开始之前,我跑了 brew install antlr4-cpp-runtime .将 header 安装到路径中。我在我的机器上做了这个,但不是在构建这个项目的任何其他机器上。悬而未决的问题是,如果未安装运行时,它为什么不是确定性的。但它在安装运行时后立即起作用。

关于cmake - Antlr4 与 C++ 和 CMake,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50050840/

39 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com