Browse Source

Added default std argument to CompileCommands::get_arguments when no compilation database is found

merge-requests/365/head
eidheim 8 years ago
parent
commit
8bf2d3032e
  1. 2
      libclangmm
  2. 37
      src/compile_commands.cc

2
libclangmm

@ -1 +1 @@
Subproject commit 5f60c3a456154ad4c5ef25103f3865668d1f64eb Subproject commit 684657732bff4fb8b5f4e7099111d633060ab774

37
src/compile_commands.cc

@ -81,27 +81,36 @@ CompileCommands::CompileCommands(const boost::filesystem::path &build_path) {
} }
std::vector<std::string> CompileCommands::get_arguments(const boost::filesystem::path &build_path, const boost::filesystem::path &file_path) { std::vector<std::string> CompileCommands::get_arguments(const boost::filesystem::path &build_path, const boost::filesystem::path &file_path) {
std::string default_std_argument="-std=c++1y";
std::vector<std::string> arguments; std::vector<std::string> arguments;
if(!build_path.empty()) { if(!build_path.empty()) {
clangmm::CompilationDatabase db(build_path.string()); clangmm::CompilationDatabase db(build_path.string());
clangmm::CompileCommands commands(file_path.string(), db); if(db) {
auto cmds = commands.get_commands(); clangmm::CompileCommands commands(file_path.string(), db);
for (auto &cmd : cmds) { auto cmds = commands.get_commands();
auto cmd_arguments = cmd.get_arguments(); for (auto &cmd : cmds) {
bool ignore_next=false; auto cmd_arguments = cmd.get_arguments();
for (size_t c = 1; c < cmd_arguments.size(); c++) { bool ignore_next=false;
if(ignore_next) { for (size_t c = 1; c < cmd_arguments.size(); c++) {
ignore_next=false; if(ignore_next) {
continue; ignore_next=false;
} continue;
else if(cmd_arguments[c]=="-o" || cmd_arguments[c]=="-c") { }
ignore_next=true; else if(cmd_arguments[c]=="-o" || cmd_arguments[c]=="-c") {
continue; ignore_next=true;
continue;
}
arguments.emplace_back(cmd_arguments[c]);
} }
arguments.emplace_back(cmd_arguments[c]);
} }
} }
else
arguments.emplace_back(default_std_argument);
} }
else
arguments.emplace_back(default_std_argument);
auto clang_version_string=clangmm::to_string(clang_getClangVersion()); auto clang_version_string=clangmm::to_string(clang_getClangVersion());
const static std::regex clang_version_regex("^[A-Za-z ]+([0-9.]+).*$"); const static std::regex clang_version_regex("^[A-Za-z ]+([0-9.]+).*$");
std::smatch sm; std::smatch sm;

Loading…
Cancel
Save