1

私の目的は、私たちの大規模で古いコードベースで呼び出されることのないプロシージャを見つけることです。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.

私の質問は次のとおりです。

  1. cmakeリンカー コマンドの先頭に を強制的に追加するにはどうすればよいcallcatcherですか?
  2. 最初の質問が XY 問題を隠している場合、呼び出されていないプロシージャを見つけるという当初の目的を .xml なしでどのように解決できますかcallcatcher

私のcmakeバージョンは3.21.3です。

4

0 に答える 0