Browse Source

Improved resource path detection on systems without clang/clang++ installed

merge-requests/413/head
eidheim 3 years ago
parent
commit
ddd53d98fb
  1. 2
      CMakeLists.txt
  2. 8
      src/compile_commands.cpp

2
CMakeLists.txt

@ -100,9 +100,7 @@ else()
find_package(LibClang REQUIRED) find_package(LibClang REQUIRED)
endif() endif()
if(APPLE)
add_definitions(-DLIBCLANG_LIBRARY_DIR="${LIBCLANG_LIBRARY_DIR}") add_definitions(-DLIBCLANG_LIBRARY_DIR="${LIBCLANG_LIBRARY_DIR}")
endif()
set(BUILD_TESTING_SAVED ${BUILD_TESTING}) set(BUILD_TESTING_SAVED ${BUILD_TESTING})
set(BUILD_TESTING OFF CACHE BOOL "Disable sub-project tests" FORCE) set(BUILD_TESTING OFF CACHE BOOL "Disable sub-project tests" FORCE)

8
src/compile_commands.cpp

@ -107,6 +107,7 @@ std::vector<std::string> CompileCommands::get_arguments(const boost::filesystem:
} }
#else #else
static auto resource_path = []() -> std::string { static auto resource_path = []() -> std::string {
if(!filesystem::find_executable("clang++").empty()) {
std::stringstream stdin_stream, stdout_stream; std::stringstream stdin_stream, stdout_stream;
auto exit_status = Terminal::get().process(stdin_stream, stdout_stream, "clang++ -print-resource-dir"); auto exit_status = Terminal::get().process(stdin_stream, stdout_stream, "clang++ -print-resource-dir");
if(exit_status != 0) if(exit_status != 0)
@ -115,6 +116,13 @@ std::vector<std::string> CompileCommands::get_arguments(const boost::filesystem:
if(!path.empty()) if(!path.empty())
path.pop_back(); path.pop_back();
return path; return path;
}
else {
boost::system::error_code ec;
for(boost::filesystem::directory_iterator it(boost::filesystem::path(LIBCLANG_LIBRARY_DIR) / "clang", ec), end; it != end; ++it)
return it->path().string();
}
return {};
}(); }();
if(!resource_path.empty()) { if(!resource_path.empty()) {
arguments.emplace_back("-resource-dir"); arguments.emplace_back("-resource-dir");

Loading…
Cancel
Save