Estou executando o Ubuntu 13.04 do meu lado e tenho clang instalado, bem como libclang-dev e llvm (por meio do apt). Eu tentei executar o exemplo RecursiveASTVisitor dado aqui: -
mas sem sorte. Uma coisa que também me incomoda é:
Unknown CMake command "llvm_map_components_to_libraries"
Eu não sei escrever um arquivo CMakeLists.txt, mas aqui está o que estou usando:
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)
Não consigo usar o llvm_map_components_to_libraries ou o add_clang_executable porque ele se queixa de não conhecer esses comandos. Eu acho que estou usando o LLVM-3.2. Aqui está o meu 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)
Pode estar errado do meu jeito?