An open API service indexing awesome lists of open source software.

https://github.com/sublimelinter/sublimelinter-clang

SublimeLinter plugin for C/C++, using clang
https://github.com/sublimelinter/sublimelinter-clang

Last synced: 10 months ago
JSON representation

SublimeLinter plugin for C/C++, using clang

Awesome Lists containing this project

README

          

SublimeLinter-clang
=========================

This linter plugin for [SublimeLinter](https://github.com/SublimeLinter/SublimeLinter3) provides an interface to [clang](http://clang.llvm.org/).
It will be used with files that have the C/C Improved/C++ syntax.

## Installation
SublimeLinter must be installed in order to use this plugin.

Please use [Package Control](https://packagecontrol.io) to install the linter plugin.

Before using this plugin, ensure that `clang` is installed on your system.
- Mac OS X: clang should be already bundled.
- Linux: clang can be easily installed using most package managers.
- Windows: the situation is a little trickier, especially with C++. One way to go is to install [mingw with clang](http://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win64/Personal%20Builds/rubenvb/). Both gcc and clang packages should be installed into the same directory.

Once `clang` is installed, ensure it is in your system PATH so that SublimeLinter can find it.
The docs cover [troubleshooting PATH configuration](http://sublimelinter.com/en/latest/troubleshooting.html#finding-a-linter-executable)

## Settings

We have two settings sections. 'clang' for c files, and 'clang++' to configure the linter for c++ files. E.g.

```
{
"linters":
{
"clang": {
"args": "-fvery-important",
"I": [
"${folder}/3rdparty/bar/include",
"${folder}/3rdparty/baz"
]
},
"clang++": {
"args": "-falso-important"
}
}
},
```

Note: 'args' has the default value '-Wall -fsyntax-only -fno-caret-diagnostics', so make sure to include them when overriding 'args'.

All common settings information can be found here:

- SublimeLinter settings: http://sublimelinter.com/en/latest/settings.html
- Linter settings: http://sublimelinter.com/en/latest/linter_settings.html

Additional settings for SublimeLinter-clang:

|Setting|Description|
|:------|:----------|
|I|A list of directories to be added to the header search paths.|
|isystem|A list of directories to be added to the system header search paths.|
|x|Automatically set depending on the file type.|

SublimeLinter allows [expansion variables](http://sublimelinter.readthedocs.io/en/latest/settings.html#settings-expansion). For example, '${folder}' can be used to specify a path relative to the project folder.

## Troubleshooting
C/C++ linting is not always straightforward. A few things to try when there's (almost) no linting information available:
- Try to compile from the command line, and verify it works.
- The linter might be missing some header files. They can be added with "include_dirs".
- Sometimes clang fails to locate the C++ standard library headers.
Assuming the compilation works when executed via command line, try to compile with `clang++ -v`.
This will display all of the hidden flags clang uses. As a last resort, they can all be added as "args".