fu7mu4’s diary

はてなダイアリーから移転しました。

macOS High Sierra で CppCheck のGUI 版を動かしてみた

English page

要るもの

  • cmake
  • pcre (header/lib)
  • cppcheck source (git)
macportsユーザー向け注意

qmake/lreleaseを使うので、qt5 または qt4 の libexec を PATHに追加する。

qt5の場合の例:

export PATH=$PATH:/opt/local/libexec/qt5/bin/

それから qmake が使えるか確認する。

qmake --version

cppchekをゲット

作業用のディレクトリで、gitコマンドで最新のソースを入手する。

git clone https://github.com/danmar/cppcheck.git

qmake

macOSユーザーだけれども、ここではqmakeを使う。Xcodeのプロジェクトフォルダはとりあえず無視していい。

cd cppcheck
cd gui
qmake HAVE_RULES=yes

これで、qmakeは設定情報を書きだす。

Project MESSAGE: Rules enabled - to disable them and remove the dependency on PCRE, pass HAVE_RULES=no to qmake.
Project MESSAGE: Charts disabled - to enable it pass HAVE_QCHART=yes to qmake.

HAVE_RULES=yesはpcreを使う。pcreのヘッダやライブラリがあるならいける。
Chartsはちょっと調べてない。たぶん、Qt5ならいけるんじゃないか。(適当)

Makefile の編集(pcre)

pcreが非標準の場所にある場合、Makefileを書きかえる以外の方法がわからない。

  • pcre.h のあるディレクトリ (ex. /opt/local/include) を INCPATH に加える。
  • pcre ライブラリのあるディレクトリ (ex. /opt/local/lib) を LIBS に加える。
18c18
< INCPATH       = -I. -I. -I../lib -I../externals -I../externals/simplecpp -I../externals/tinyxml -I../lib -I/opt/local/libexec/qt5/lib/QtPrintSupport.framework/Headers -I/opt/local/libexec/qt5/lib/QtWidgets.framework/Headers -I/opt/local/libexec/qt5/lib/QtGui.framework/Headers -I/opt/local/libexec/qt5/lib/QtCore.framework/Headers -Itemp -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/System/Library/Frameworks/OpenGL.framework/Headers -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/System/Library/Frameworks/AGL.framework/Headers -Itemp -I/opt/local/libexec/qt5/mkspecs/macx-clang -F/opt/local/libexec/qt5/lib
 ---
> INCPATH       = -I. -I. -I../lib -I../externals -I../externals/simplecpp -I../externals/tinyxml -I/opt/local/include -I../lib -I/opt/local/libexec/qt5/lib/QtPrintSupport.framework/Headers -I/opt/local/libexec/qt5/lib/QtWidgets.framework/Headers -I/opt/local/libexec/qt5/lib/QtGui.framework/Headers -I/opt/local/libexec/qt5/lib/QtCore.framework/Headers -Itemp -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/System/Library/Frameworks/OpenGL.framework/Headers -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/System/Library/Frameworks/AGL.framework/Headers -Itemp -I/opt/local/libexec/qt5/mkspecs/macx-clang -F/opt/local/libexec/qt5/lib
41c41
< LIBS          = $(SUBLIBS) -F/opt/local/libexec/qt5/lib -L/Users/dote/Documents/work/cppcheckdoc/cppcheck/gui/../externals -L../externals -lpcre -framework QtPrintSupport -framework QtWidgets -framework QtGui -framework QtCore -framework DiskArbitration -framework IOKit -framework OpenGL -framework AGL
 ---
> LIBS          = $(SUBLIBS) -F/opt/local/libexec/qt5/lib -L/opt/local/lib -L/Users/dote/Documents/work/cppcheckdoc/cppcheck/gui/../externals -L../externals -lpcre -framework QtPrintSupport -framework QtWidgets -framework QtGui -framework QtCore -framework DiskArbitration -framework IOKit -framework OpenGL -framework AGL

cppcheck-gui.app の作成

ここまできたら、 make を実行して cppcheck-gui.app を現在ディクレトリに生成する。

make

日本語翻訳の追加

cppcheck-gui アプリは各種言語表示に設定できる。
ここでは、cppcheck_ja.ts という日本語設定を qm ファイルに変換してから、cppcheck-gui.app へ追加する。

lrelease cppcheck_ja.ts -qm cppcheck_ja.qm
mv cppcheck_ja.qm cppcheck-gui.app/Contents/MacOS/

cfg ディレクトリの追加

単純にcfg ディレクトリを cppcheck-gui.app の適切なディレクトリにコピーすればいい。

cp -R cfg cppcheck-gui.app/Contents/MacOS/

実行

cppcheck-guiアプリを起動する。

open cppcheck-gui.app

たぶん、別の場所に移動しても動くと思う。