Fixed building with clang

This commit is contained in:
Bartek Kryza
2022-02-12 18:55:42 +01:00
parent 8e73db6ccd
commit b11396cbf3
3 changed files with 18 additions and 5 deletions

View File

@@ -15,16 +15,18 @@ set(CLANG_UML_INSTALL_BIN_DIR ${PROJECT_SOURCE_DIR}/bin)
set(UML_HEADERS_DIR ${PROJECT_SOURCE_DIR}/src/uml)
set(LLVM_PREFERRED_VERSION 12.0.0)
message(STATUS "Checking for spdlog...")
find_package(spdlog REQUIRED)
get_target_property(SPDLOG_INCLUDE_DIRS spdlog::spdlog INTERFACE_INCLUDE_DIRECTORIES)
get_target_property(SPDLOG_INCLUDE_DIRS spdlog::spdlog_header_only INTERFACE_INCLUDE_DIRECTORIES)
add_definitions(-DSPDLOG_FMT_EXTERNAL)
message(STATUS "Checking for yaml-cpp...")
find_package(yaml-cpp REQUIRED)
message(STATUS "Checking for libclang...")
set(LLVM_PREFERRED_VERSION 12.0.0)
set(LIBCLANG_LLVM_CONFIG_EXECUTABLE "/usr/local/opt/llvm@12/bin/llvm-config")
find_package(LibClang REQUIRED)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++17 ${LIBCLANG_CXXFLAGS}")
@@ -63,7 +65,7 @@ add_library(clang-umllib OBJECT ${SOURCES})
add_executable(clang-uml ${MAIN_SOURCE_FILE})
install(TARGETS clang-uml DESTINATION ${CLANG_UML_INSTALL_BIN_DIR})
target_link_libraries(clang-uml ${LIBCLANG_LIBRARIES} ${YAML_CPP_LIBRARIES} spdlog::spdlog cppast clang-umllib)
target_link_libraries(clang-uml ${LIBCLANG_LIBRARIES} ${YAML_CPP_LIBRARIES} spdlog::spdlog_header_only cppast clang-umllib)
target_compile_features(clang-uml PRIVATE cxx_std_17)
install(

View File

@@ -38,7 +38,7 @@ release/CMakeLists.txt:
debug: debug/CMakeLists.txt
echo "Using ${NUMPROC} cores"
make -C debug -j$(NUMPROC)
make -C debug -j$(NUMPROC) VERBOSE=1
release: release/CMakeLists.txt
make -C release -j

View File

@@ -1,3 +1,5 @@
#include <utility>
namespace clanguml {
namespace t00017 {
class A {
@@ -34,6 +36,15 @@ class K {
};
class R {
explicit R(int &some_int, C &cc, const E &ee, F &&ff, I *&ii)
: some_int_reference{some_int}
, c{cc}
, e{ee}
, f{std::move(ff)}
, i{ii}
{
}
private:
int some_int;
int *some_int_pointer;
@@ -43,7 +54,7 @@ private:
B *b;
C &c;
const D *d;
const E &e{};
const E &e;
F &&f;
G **g;
H ***h;