From 79c1056553e5150cbdb12e52a19603fd33c3e517 Mon Sep 17 00:00:00 2001 From: Tom Willemse Date: Thu, 22 Jul 2021 01:09:45 -0700 Subject: [PATCH] Generate the compilation database through CMake Use an Emacs directory-local variable to specify to ccls where the compilation directory lives, tell CMake to generate the compilation database, and remove bear from the environment. Add clang to the environment for clang-format. --- .dir-locals.el | 4 ++++ clox/CMakeLists.txt | 2 ++ environment.scm | 3 ++- 3 files changed, 8 insertions(+), 1 deletion(-) create mode 100644 .dir-locals.el diff --git a/.dir-locals.el b/.dir-locals.el new file mode 100644 index 0000000..e717202 --- /dev/null +++ b/.dir-locals.el @@ -0,0 +1,4 @@ +;;; Directory Local Variables +;;; For more information see (info "(emacs) Directory Variables") + +((c-mode . ((ccls-args . '("--init={\"compilationDatabaseDirectory\": \"clox/_build\"}"))))) diff --git a/clox/CMakeLists.txt b/clox/CMakeLists.txt index fb44875..aa285e1 100644 --- a/clox/CMakeLists.txt +++ b/clox/CMakeLists.txt @@ -2,4 +2,6 @@ cmake_minimum_required(VERSION 2.19) project(Lox C) +set(CMAKE_EXPORT_COMPILE_COMMANDS ON) + add_subdirectory(src) diff --git a/environment.scm b/environment.scm index 096d72d..3c649c3 100644 --- a/environment.scm +++ b/environment.scm @@ -9,4 +9,5 @@ (specification->package "dejagnu") (specification->package "gcc-toolchain") (specification->package "ccls") - (specification->package "bear"))) + ;; For clang-format + (specification->package "clang")))