Home

Awesome

YCM-Generator

This is a script which generates a list of compiler flags from a project with an arbitrary build system. It can be used to:

It works by building the project with a fake toolchain, which simply and filters compiler flags to be stored in the resulting file.

It is reasonably fast, taking ~10 seconds to generate a configuration file for the Linux kernel.

Status

This plugin is in maintenance mode. I am happy to merge PRs and triage bug reports, but am not actively working on it.

Installation

Add NeoBundle 'rdnetto/YCM-Generator' to your vimrc (or the equivalent for your plugin manager).

For vim-plug users, add Plug 'rdnetto/YCM-Generator', { 'branch': 'stable'} to your vimrc.

Alternatively, Arch Linux users can install YCM-Generator using the (unofficial) AUR package.

Usage

Run ./config_gen.py PROJECT_DIRECTORY, where PROJECT_DIRECTORY is the root directory of your project's build system (i.e. the one containing the root Makefile, etc.)

You can also invoke it from within Vim using the :YcmGenerateConfig or :CCGenerateConfig commands to generate a config file for the current directory. These commands accept the same arguments as ./config_gen.py, but do not require the project directory to be specified (it defaults to the current working directory).

Requirements and Limitations

Your build system should support specifying the compiler through the CC/CXX environment variables, or not use an absolute path to the compiler.

Some flags present in the resulting configuration file may be mutually exclusive with each other - reading the generated file prior to use is recommended.

The script assumes that executables with the names clang and clang++ exist in your PATH. This has been known to cause issues under Ubuntu, where the C++ compiler may be called clang++-3.6 (see #50).

Documentation & Support

Development

Patches are welcome. Please submit pull requests against the develop branch.

Windows support

The script is currently supported under Unices (Linux, NixOS<sup>[1]</sup>, BSD, OS X) only. Implementing Windows support consists of porting the contents of fake-toolchain/Unix. If you are interested in implementing/testing this, please open a pull request.

<sup>[1]</sup> May require --preserve-environment - see #19

Test Cases

The following projects are used for testing:

ProjectBuild systemNotes
Linux kernelKbuild (Make)
Vim-qtAutotools
ClementineCmake
ExtPlaneQmakeShould be tested with both versions of Qt.
OpenFOAMwmake

License

YCM-Generator is published under the GNU GPLv3.