Я пытался использовать clang-modernize
с CMAKE_EXPORT_COMPILE_COMMANDS
как рекомендуется в помощи этого инструмента.
С этой опцией cmake генерирует JSON-файл, содержащий информацию о компиляции, такую как include-пути (смотрите также).
Эта переменная принимается в командной строке cmake,
но cmake --help-variable CMAKE_EXPORT_COMPILE_COMMANDS
не работает (что согласуется с этот список рассылки).
Есть ли у кого-нибудь идеи о том, как его использовать?
Я мог бы также использовать это с cppcheck.
Еще немного информации
Я обнаружил на форум разработчиков Clang что эта функция cmake доступна не на всех генераторах. Это может измениться в будущем, в то же время мой вопрос останется, и я постараюсь посмотреть, что произойдет, если я использую другие генераторы, кроме Visual Studio.
Я предлагаю установку
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
в CMakeList.txt
Начиная с CMake 3.5 CMAKE_EXPORT_COMPILE_COMMANDS
вариант поддерживается генераторами Ninja и Makefiles.
Это означает, что для создания базы данных JSON-компиляции нужно выбрать генератор, который ее поддерживает.
Например, в UNIX просто:
cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=1 /path/to/src
(так как он использует генератор makefile там, по умолчанию)
В противном случае вы можете явно указать генератор следующим образом:
cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=1 /path/to/src -G Ninja
Или же:
cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=1 /path/to/src -G 'Unix Makefiles'
Или другой вариант makefiles, который поддерживает ваш cmake — список поддерживаемых генераторов включен в вывод cmake --help
,
Обратите внимание, что файл JSON базы данных компиляции создается во время выполнения cmake, а не во время компиляции. Кроме того, с последними версиями Clang (например, Clang >= 3.8
), clang-modernize
был объединен в clang-tidy
,
Я тоже не смог заставить работать генератор Visual Studio.
Однако он работал с использованием генератора «NMake Makefiles».
C:\work\build>cmake -G "NMake Makefiles" -DCMAKE_EXPORT_COMPILE_COMMANDS=ON ..