我正在运行Ubuntu 13.04,我已经安装了clang 以及 libclang-dev 和 llvm (通过apt)。我努力运行这里给出的 RecursiveASTVisitor 示例: -
http://clang.llvm.org/docs/RAVFrontendAction.html
但没有运气。关于烦我的事情是: -
Unknown CMake command "llvm_map_components_to_libraries"
我不知道如何编写CMakeLists.txt文件,但我正在使用的是: -
cmake_minimum_required(VERSION 2.8)
set(CMAKE_MODULE_PATH
${CMAKE_MODULE_PATH}
"."
)
find_package(LibClang REQUIRED)
find_package(LLVM)
if(NOT LLVM_FOUND)
message(FATAL_ERROR "Fatal Error: LLVM cannot be found.")
endif()
add_definitions(${LibClang_DEFINITIONS})
include_directories(
${LibClang_INCLUDE_DIRS}
)
include_directories( ${LLVM_INCLUDE_DIRS} )
link_directories( ${LLVM_LIBRARY_DIRS} )
add_executable(ast TestCLang.cpp)
target_link_libraries(ast
${LibClang_LIBRARIES}
)
include_directories( ${LLVM_INCLUDE_DIRS} )
link_directories( ${LLVM_LIBRARY_DIRS} )
llvm_map_components_to_libraries(REQ_LLVM_LIBRARIES jit native)
target_link_libraries(ast REQ_LLVM_LIBRARIES)
#add_subdirectory(test)
set(LLVM_USED_LIBS clangTooling)
#add_clang_executable(find-class-decls TestCLang.cpp)
我不能使用 llvm_map_components_to_libraries 或 add_clang_executable ,因为它抱怨不知道这些命令。我想我正在使用LLVM-3.2。 这是我的 FindLibClang.cmake : -
execute_process(
COMMAND llvm-config --cxxflags
OUTPUT_VARIABLE LibClang_DEFINITIONS)
set(LibClang_DEFINITIONS ${LibClang_DEFINITIONS} "-fno-rtti")
execute_process(
COMMAND llvm-config --includedir
OUTPUT_VARIABLE LibClang_INCLUDE_DIR)
find_library(LibClang_LIBRARY NAMES clang)
set(LibClang_LIBRARIES ${LibClang_LIBRARY})
set(LibClang_INCLUDE_DIRS ${LibClang_INCLUDE_DIR})
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(LibClang DEFAULT_MSG LibClang_LIBRARY LibClang_INCLUDE_DIR)
mark_as_advanced(LibClang_INCLUDE_DIR LibClang_LIBRARY)
有人对我的结果有什么不妥吗?
谢谢和问候, Prakhar Mishra