CMake を使用するオープン ソース プロジェクト (kst、v2.0.8) を構築しています。CMake v2.8.12.2 と MSVC 2008 をコンパイラとして使用しており、コマンド ラインでビルドするために NMake メイクファイルを生成しています。このセットアップで正常にビルドできます。これらのバージョンは義務付けられているため、現在、CMake または MSVC の新しいバージョンを使用することはできません。
HP の Fortify を使用して kst のソース コード分析を実行し、コマンド ラインから使用できるようにする必要があります。
独自の「cl.exe」を作成するタッチレス モードでは、実際の cl.exe へのパスの前にそのパスを設定するため、ビルド中に起動されます。
Makefile のコンパイラを Fortify コマンド ラインに設定し
sourceanalyzer -b build_id cl
ますcl
。
いずれにせよ、cmakeがmakefileに生成するコンパイラを、cmakeが自動的に検出しないものにする必要があります。
この質問の同じ方法に従ってcmakeを実行するときにコンパイラを設定しようとしましたが、cmakeはまだメイクファイルにMSVC cl.exeへのフルパスを入れることを主張しています。
cmake -DCMAKE_C_COMPILER=cl -DCMAKE_C_COMPILER_FORCED=ON -DCMAKE_CXX_COMPILER=cl -DCMAKE_CXX_COMPILER_FORCED=ON -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX=%CFITSIO_DIR% -G"NMake Makefiles" ..\cfit3250
Fortify を呼び出すようにコンパイラを設定しようとしましたが、cmake がコンパイラをテストすると、コンパイラが見つからないと言って失敗します。(また、FORCED=ON 引数なしでこれを試しましたが、その場合、コンパイラが失敗したと表示されます。)
cmake -DCMAKE_C_COMPILER="sourceanalyzer -b %BUILDID% cl" -DCMAKE_C_COMPILER_FORCED=ON -DCMAKE_CXX_COMPILER="sourceanalyzer -b %BUILDID% cl" -DCMAKE_CXX_COMPILER_FORCED=ON -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX=%CFITSIO_DIR% -G"NMake Makefiles" ..\cfit3250
おそらくmakefile内のすべてのコンパイラ呼び出しを検索して置き換えることができますが、cmakeのたびにそれを行うことを覚えておく必要があり、複数のプロジェクト/ makefile / clへの呼び出しがあるため(CCを定義するのではなく)見るのは面倒です.メイクファイルの変数)。オフセットから直接、目的のコンパイラを cmake に使用させる方法があればいいのにと思います。