web-dev-qa-db-ja.com

CMAKE_EXPORT_COMPILE_COMMANDSの使用方法

このツールのヘルプで推奨されているように、clang-modernizeCMAKE_EXPORT_COMPILE_COMMANDSで使用しようとしています。

このオプションを使用すると、cmakeはインクルードパス( も参照 )などのコンパイル情報を含むJSONファイルを生成します。

この変数はcmakeのコマンドラインで受け入れられますが、cmake --help-variable CMAKE_EXPORT_COMPILE_COMMANDSは機能しません(これは このメーリングリストの投稿 と一貫しています)。

それを使用する方法について誰かが何か考えを持っていますか?

Cppcheckでも使用できます。

その他の情報

clang開発者フォーラム で、このcmake機能がすべてのジェネレーターで使用できるわけではないことを発見しました。これは将来変更される可能性がありますが、その間に私の質問は残ります。VisualStudio以外のジェネレーターを使用した場合に何が起こるかについても確認します。

25
dzada

設定をお勧めします

set(CMAKE_EXPORT_COMPILE_COMMANDS ON)

cMakeList.txt内

30
Jörn Reimerdes

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-modernizeclang-tidyに統合されました。

19
maxschlepzig

私もVisual Studioジェネレーターで作業することができませんでした。ただし、「NMake Makefiles」ジェネレータを使用して機能しました。

C:\work\build>cmake -G "NMake Makefiles"  -DCMAKE_EXPORT_COMPILE_COMMANDS=ON  ..
3
zr.