私の目的は、私たちの大規模で古いコードベースで呼び出されることのないプロシージャを見つけることです。neci と呼ばれる私たちのコードは、ほとんどが Fortran で、一部は C/C++ コードです。この質問に対する一番の答えから、すばらしいツールcallcatcherに出くわしましたが、cmake と組み合わせるのが困難です。
callcatcher
一連の Fortran ファイルを手動でコンパイルして使用すると、すべてが正しく機能し、未使用のプロシージャが見つかります。
cmake
今、私はこのツールをコンパイル プロセスに組み込み、使用したいと考えました。
cmake \
-DCMAKE_BUILD_TYPE=Debug \
-DCMAKE_Fortran_COMPILER=mpifort -DCMAKE_C_COMPILER=mpicc -DCMAKE_CXX_COMPILER=mpicxx \
-DCMAKE_Fortran_COMPILER_LAUNCHER=callcatcher -DCMAKE_C_COMPILER_LAUNCHER=callcatcher -DCMAKE_CXX_COMPILER_LAUNCHER=callcatcher \
-DCMAKE_Fortran_LINKER_LAUNCHER=callcatcher -DCMAKE_C_LINKER_LAUNCHER=callcatcher -DCMAKE_CXX_LINKER_LAUNCHER=callcatcher \
~/code/neci
次に、コンピューターは次のことについて警告します。
CMake Warning:
Manually-specified variables were not used by the project:
CMAKE_Fortran_LINKER_LAUNCHER
実際、 でコンパイルするとVERBOSE=3 make -j neci
、ファイルが で正しくコンパイルされていることがわかりますcallcatcher
が、リンク手順で呼び出しの前にcallcatcher
.
私の質問は次のとおりです。
cmake
リンカー コマンドの先頭に を強制的に追加するにはどうすればよいcallcatcher
ですか?- 最初の質問が XY 問題を隠している場合、呼び出されていないプロシージャを見つけるという当初の目的を .xml なしでどのように解決できますか
callcatcher
。
私のcmakeバージョンは3.21.3です。