The only online resources I have found are the CMake documentation on CMAKE_<LANG>_CPPLINT (link here) and this example (link here), but I cannot figure out how to actually use it inside a CMakeLists.txt file.
I tried the example provided, but I can't make it work. FYI, I installed cpplint as explained here.
As of now, I can run the cpplint python script inside CMakeLists.txt using this CMake command:
execute_process(COMMAND cpplint path/To/File/To/Analyse.cpp)
However, I am pretty sure that this is not the right way to do this.
Recommended way to use static analysis tools with CMake was presented in Daniel Pffeifer's "Effective Cmake" (https://www.youtube.com/watch?v=rLopVhns4Zs&=&t=77m13s).
You can either define it when calling
cmake, eg.:or put it into
CMakeLists.txt:Recommended option is the first one (we shouldn't define in a project what isn't a project requirement).
CMake will call
cpplintfor each file it compiles. You can pass extra arguments after semicolon (e.g.-DCMAKE_CXX_CPPLINT=cpplint;--linelength=100).Downsides of this method:
cpplintis invoked for each file separately).cpplint).Note that you can use other static analysis tools the same way:
"-DCMAKE_CXX_CLANG_TIDY=/usr/bin/clang-tidy-3.9;-checks=*""-DCMAKE_CXX_CPPCHECK=/usr/bin/cppcheck;--std=c++11""-DCMAKE_CXX_INCLUDE_WHAT_YOU_USE=/usr/bin/iwyu;--transitive_includes_only"cmake -DCMAKE_LINK_WHAT_YOU_USE=TRUESome of them will require "compilation database" (
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)).