2012-05-10 34 views
1

我有一個項目,我正在使用CMake管理,我遇到了一些我不明白的奇怪行爲。如果我清除了我的編譯目錄,運行cmake,運行make,然後運行我的程序,我的程序每次都崩潰,因爲我在pthreads/boost線程的某處斷言了一個斷言。無論我做了多少次,並且清理這個項目,每次運行它都會崩潰。但是,如果我然後刪除CMaketCache.txt,重新生成我的makefile,生成並運行,程序每次都按預期運行。CMake失敗,直到您刪除CMake緩存

總之我需要遵循以下步驟爲我的代碼工作...

  1. 運行cmake
  2. 運行make
  3. RM CMakeCache.txt
  4. 運行make
  5. 運行程序

看來,在我rem之前和之後的Make文件CMakeCache.txt不同。什麼可以解釋這種行爲?

回答

1

你有沒有安裝git?如果是這樣,你可以使用這一招:

  • 運行cmake
  • 使
  • git的補充。
  • git的承諾-m 「」
  • RM CMakeCache.txt
  • 運行make
  • git的差異

一些奇怪的事情,我可以在你在說什麼看到的。我不明白爲什麼你的程序會因爲你刪除CMakeCache.txt而重新編譯任何東西。所有東西都應該是最新的,所以有些東西是不好的......我的猜測是它第二次找到一個不同的線程庫或沒有線程庫。

+0

一旦你看完diff,你會想''git reset HEAD ^'來擺脫臨時提交。 –