[cmake-developers] custom_command and compile_commands.json

Máté Ferenc Nagy-Egri csiga.biga at aol.com
Wed Nov 22 06:37:46 EST 2017


Well, my impression was that it is generally for external tools to be aware of the build process, or the commands CMake executes.

compile_commands.json is how Microsofts C++ extension to Visual Studio Code fetches compiler definitions and include directories. See last paragraph of:

https://github.com/Microsoft/vscode-cpptools/blob/master/Documentation/Getting%20started.md

The most feature complete LaTeX extension for VS Code is James Yus LaTeX Workshop

https://marketplace.visualstudio.com/items?itemName=James-Yu.latex-workshop

If I have a multi-language project (where CMake shines) that is end-to-end automated, such as the example found here:

https://github.com/Wigner-GPU-Lab/Teaching/tree/master/KutInf

(don’t heed git commit messages, Latex does work) which does:

1. Compiles a library
2. Compiles an executable that links to it
3. Runs the exe to get data
4. Invokes GnuPlot to create a diagram
5. Invokes LaTeX to create a doc with the diagram in it

The nice thing about it is, that if someone decides they need to alter the library, or just the exe, or just rename the plot axis… dependencies are tracked by CMake and building the doc target gets the job done with minimal effort. The C++ part of this works fine in VS Code, but I would like to make the LaTeX Workshop extension also aware of an external build system, much as how cpptools can be made aware of external magic.

In the end, I would like to be able to all the featues of LaTeX Workshop (linting, two-way navigation between resulting PDF & source .tex files (aka. SyncTeX), being able to display the result PDFs…) without having to do much more, other than authoring a decent CMakeLists.txt file and telling the extension where compile_commands.json is, much like as is the case with cpptools.


It is nice to have prime time support for Clang-tidy inside CMake, but hiding everything in the internals of CMake doesn’t help much with the tooling. Hope my use case was made clear enough.


Cheers,
Máté

Feladó: Brad King
Elküldve: 2017. november 21., kedd 16:00
Címzett: cmake-developers at cmake.org
Tárgy: Re: [cmake-developers] custom_command and compile_commands.json

On 11/21/2017 05:31 AM, Máté Ferenc Nagy-Egri via cmake-developers wrote:
> can we export custom commands into compile_commands.json?

The purpose of that file is to make compile commands available to
tools like clang-tidy.  Custom commands do not belong in it.
Its purpose has been largely superseded by first-class support
for running such tools along with the compiler, e.g.

https://cmake.org/cmake/help/v3.10/prop_tgt/LANG_CLANG_TIDY.html

It is also not produced by all generators.

> have the relevant Visual Studio Code extensions hook into
> ... LaTeX-Workshop extensino is not.

Please explain this use case.

-Brad
-- 

Powered by www.kitware.com

Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ

Kitware offers various services to support the CMake community. For more information on each offering, please visit:

CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html

Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/cmake-developers

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/cmake-developers/attachments/20171122/cde9204e/attachment.html>


More information about the cmake-developers mailing list