首页 > 解决方案 > 我可以在源代码之外使用 Clang 库吗?

问题描述

一段时间以来,我一直在尝试使用源代码之外的 clang 库。本质上,我一直在处理各种 cmake 文件。我通过 llvm pass 完成了类似的事情,我能够使用 llvm libs 以下列方式编译 cpp 文件:

这是父目录中的 cmake 文件。

cmake_minimum_required(VERSION 3.10)
find_package(LLVM REQUIRED CONFIG)
message(STATUS ${LLVM_VERSION})
list(APPEND CMAKE_MODULE_PATH "${LLVM_CMAKE_DIR}")
include(AddLLVM)

add_definitions(${LLVM_DEFINITIONS})
include_directories(${LLVM_INCLUDE_DIRS})

add_subdirectory(myPasses)

子目录下的cmake文件为:

cmake_minimum_required(VERSION 3.10)
add_llvm_library(LLVMtest MODULE
    file1.cpp
    file2.cpp
    file3.cpp
)

如果我可以制作这样的 cmake 文件来使用 clang 来编写 FrontEndActions,那就太好了。

标签: c++makefilecmakeclangllvm

解决方案


您可以像使用 LLVM 一样搜索 Clang 的 CMake 模块:

find_package(Clang REQUIRED CONFIG)

然后,您可以像通常使用 CMake 项目一样使用 Clang 库,例如:

add_executable(ClangTest
    file1.cpp
    file2.cpp
    file3.cpp
)
target_link_libraries(ClangTest clangBasic clangEdit)

还有一些类似于你从 LLVM 的 CMake 中获得的功能:源代码(我没有使用它们,所以无法评论这部分)。


推荐阅读