このツールのヘルプで推奨されているように、clang-modernize
をCMAKE_EXPORT_COMPILE_COMMANDS
で使用しようとしています。
このオプションを使用すると、cmakeはインクルードパス( も参照 )などのコンパイル情報を含むJSONファイルを生成します。
この変数はcmakeのコマンドラインで受け入れられますが、cmake --help-variable CMAKE_EXPORT_COMPILE_COMMANDS
は機能しません(これは このメーリングリストの投稿 と一貫しています)。
それを使用する方法について誰かが何か考えを持っていますか?
Cppcheckでも使用できます。
その他の情報
clang開発者フォーラム で、このcmake機能がすべてのジェネレーターで使用できるわけではないことを発見しました。これは将来変更される可能性がありますが、その間に私の質問は残ります。VisualStudio以外のジェネレーターを使用した場合に何が起こるかについても確認します。
設定をお勧めします
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'
または、cmakeがサポートする別のmakefilesバリアント-サポートされるジェネレーターのリストが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 ..