1

CMake を使用して管理しているプロジェクトがあり、理解できない非常に奇妙な動作に遭遇しました。ビルド ディレクトリをクリアし、cmake を実行し、make を実行してからプログラムを実行すると、pthreads/boost スレッドのどこかでアサーションに失敗するため、毎回プログラムがクラッシュします。このプロジェクトを何度も作成してきれいにしても、実行するたびにクラッシュします。ただし、CMaketCache.txt を削除し、メイクファイルを再生成し、ビルドして実行すると、プログラムは毎回期待どおりに実行されます。

要約すると、コードを機能させるには、次の手順に従う必要があります...

  1. Cmake を実行する
  2. メイクを実行
  3. rm CMakeCache.txt
  4. メイクを実行
  5. プログラムを実行

CMakeCache.txt を削除する前後の Make ファイルが異なるようです。この動作を説明できるものは何ですか?

4

1 に答える 1

1

gitをインストールしていますか?もしそうなら、あなたはこのトリックを使うことができます:

  • cmakeを実行します
  • 作る
  • gitadd。
  • git commit -m ""
  • rm CMakeCache.txt
  • makeを実行します
  • git diff

あなたが言っていることに私が見ることができるいくつかの奇妙なこと。CMakeCache.txtを削除したからといって、プログラムが何かを再コンパイルする理由がわかりません。すべてが最初のメーカーから最新である必要があるので、そこで何かが悪いです...私の推測では、2回目は別のスレッドライブラリを見つけるか、スレッドライブラリを見つけていません。

于 2012-05-10T16:48:14.613 に答える