Updated Build (markdown)

Fangrui Song 2018-05-11 14:21:11 -07:00
parent 0e0afea3f1
commit 4f9b4014ec
2 changed files with 14 additions and 6 deletions

@ -5,7 +5,7 @@ To get started building ccls, first install the required dependencies:
* CMake 3.1 or higher * CMake 3.1 or higher
* C++ Compiler with C++17 support: * C++ Compiler with C++17 support:
* Clang 5 or higher * Clang 5 or higher
* GCC 5 or higher * GCC 6 or higher
* MSVC 2017 or higher (included with VS2017 Build Tools) * MSVC 2017 or higher (included with VS2017 Build Tools)
After installing the required dependencies, clone the repository along with its After installing the required dependencies, clone the repository along with its
@ -93,3 +93,9 @@ cmake --build release
├── libclang.so.7 -> libclang.so.7.0 ├── libclang.so.7 -> libclang.so.7.0
└── libclang.so.7.0 └── libclang.so.7.0
``` ```
If you don't have an up-to-date `libstdc++` and want to use `libc++` in the bundled clang+llvm archive:
```zsh
cmake -G Ninja -DCMAKE_BUILD_TYPE=MinSizeRel -DCMAKE_CXX_COMPILER=clang++ -DCLANG_USE_BUNDLED_LIBC++=on -Brelease -H.
```

@ -1,10 +1,12 @@
1. See [[Getting started]] to build the `bin/ccls` executable 1. See [[Getting started]] to build the `bin/ccls` executable
1. Install [lsp-mode](https://github.com/emacs-lsp/lsp-mode) 1. Install [lsp-mode](https://github.com/emacs-lsp/lsp-mode)
2. Install [emacs-ccls](https://github.com/ccls-project/emacs-ccls) and [configure](#configure) it 2. Install [emacs-ccls](https://github.com/MaskRay/emacs-ccls) and [configure](#configure) it
3. Open a source file where either [[.ccls|Getting-started#ccls]] or [[compile_commands.json]] is in the project root (it may work without them, though not recommended) 3. Open a source file where either [[.ccls|Getting-started#ccls]] or [[compile_commands.json]] is in the project root (it may work without them, though not recommended)
4. `M-x lsp-ccls-enable`. Don't invoke `M-x lsp-mode`. `lsp-ccls-enable` will turn on `lsp-mode` for you 4. `M-x lsp-ccls-enable`. Don't invoke `M-x lsp-mode`. `lsp-ccls-enable` will turn on `lsp-mode` for you
### Install [emacs-ccls](https://github.com/ccls-project/emacs-ccls) ### Install [emacs-ccls](https://github.com/MaskRay/emacs-ccls)
https://github.com/melpa/melpa/pull/5405
https://melpa.org/#/ccls https://melpa.org/#/ccls
@ -29,7 +31,7 @@ The only required configuration is `ccls-executable`. Others have good defaults.
#### Projects with subprojects #### Projects with subprojects
For each source file that has turned on `lsp-ccls-enable`, variable `ccls-project-roots`, projectile, `compile_commands.json` are consulted to locate the project root and the associated lsp-mode workspace. If your project has subprojects, `(projectile-project-root)` may think files in the subproject belong to the child workspace, which is not desired. `(setq ccls-project-roots '("~/my-root-project" ))` to override projectile roots. For each source file that has turned on `lsp-ccls-enable`, variable `MaskRay-roots`, projectile, `compile_commands.json` are consulted to locate the project root and the associated lsp-mode workspace. If your project has subprojects, `(projectile-project-root)` may think files in the subproject belong to the child workspace, which is not desired. `(setq MaskRay-roots '("~/my-root-project" ))` to override projectile roots.
If you do not mind files in subprojects are treated as part of the whole project in projectile: If you do not mind files in subprojects are treated as part of the whole project in projectile:
@ -64,7 +66,7 @@ The buffer `*lsp-ccls stderr*` and `--log-file=/tmp/cq.log` contain logs.
## [[Initialization options]] ## [[Initialization options]]
Initialization options are defined in [config.h](https://github.com/ccls-project/ccls/blob/master/src/config.h), but you need to customize them in S-exp. Initialization options are defined in [config.h](https://github.com/MaskRay/ccls/blob/master/src/config.h), but you need to customize them in S-exp.
Use `t` for true, `:json-false` for false, `:json-null` for null. Use `t` for true, `:json-false` for false, `:json-null` for null.
```elisp ```elisp
@ -151,7 +153,7 @@ Install [company-lsp](https://github.com/tigersoldier/company-lsp) and add `comp
Type `#i"` (or `#include "`) for quote-style includes and `#i<` (or `#include <`) for system headers. Type `#i"` (or `#include "`) for quote-style includes and `#i<` (or `#include <`) for system headers.
See https://github.com/ccls-project/ccls/pull/391#issuecomment-362872732 for an alternative view (contextual parent as detail, signature as label) See https://github.com/MaskRay/ccls/pull/391#issuecomment-362872732 for an alternative view (contextual parent as detail, signature as label)
```elisp ```elisp
(setq ccls-extra-init-params '(:completion (:detailedLabel t))) (setq ccls-extra-init-params '(:completion (:detailedLabel t)))
``` ```