0

CMake を使用して Visual Studio Express 2010 で ParaView をビルドしています。生成されたソリューションに問題があります。問題は、追加の依存関係 (MPI ライブラリ) 用に生成されたエントリの 1 つがセミコロンで区切られているはずなのに、スペースで区切られていることです。この結果、プロジェクトのビルド時にリンカーが多くのエラーを生成します。

これはエラーメッセージです:

リンク: 致命的なエラー LNK1104: ファイル 'C:\Program Files (x86)\MPICH2\lib\mpi.lib C:\Program Files (x86)\MPICH2\lib\cxx.lib' を開けません。

プロジェクト構成には、次のエントリがあります。

C:\Program Files (x86)\MPICH2\lib\mpi.lib C:\Program Files (x86)\MPICH2\lib\cxx.lib

ただし、セミコロンで区切られた 2 つのエントリが必要です。

C:\Program Files (x86)\MPICH2\lib\mpi.lib;C:\Program Files (x86)\MPICH2\lib\cxx.lib

ライブラリへの参照をプロジェクトごとに手動で修正して修正しようとしましたが、時間がかかりすぎます。

これは、CMake レベルまたは Visual Studio レベルで (ソリューション全体の追加の依存関係エントリを修正することにより) 修正できると思いますが、これらのことを行う方法を実際には知りません。何を変更する必要があるかを正確に特定できるほど、CMake のアーキテクチャに精通していません。どうすればこれを解決できますか?

4

2 に答える 2

0

これは、FindMPI モジュールのバグのようです。これを修正する最も簡単な方法は、ビルド ツリーのルートにある CMakeCache.txt を編集することです。スペースの代わりにセミコロンを使用するには、MPI_LIBRARY および MPI_LIBRARIES エントリを編集する必要があります。

于 2012-03-26T20:54:22.107 に答える
0

CMakeLists.txt の行を確認してくださいTARGET_LINK_LIBRARIES。このコマンドで括弧内に引用符が使用されている場合は、それらを削除してみてください。たとえば、次の場合:

TARGET_LINK_LIBRARIES(MainExe "${lib1} ${lib2}")

次のように変更します。

TARGET_LINK_LIBRARIES(MainExe ${lib1} ${lib2})

これで解決しない場合は、質問に CMakeLists.txt を投稿する必要があります。

于 2012-03-14T23:25:19.367 に答える