我是CMake的新手。我在Linux上測試了我正在製作的程序。這個程序使用(POSIX線程LIB),所以在我CMakeList,我說:CMake:在Windows中找不到<pthread.h>
find_package(Threads)
它適用於Linux的發行商(拱,薄荷,Ubuntu的,...),但現在,我想它WINDOWS32(Visual Studio的9 2008年),我生成過程中得到這個消息:
-- Looking for include file pthread.h - not found
(當我編譯輸出的項目文件,pthread.h確實沒有找到)。
在Windows上,考慮到 「C:\並行線程」 作爲我的並行線程的目錄,我在路徑定義:
- 「C:\並行線程\包括」(其中位於著名的 「pthread.h」)
- 「C:\並行線程\」(在CMake的尋找一個「有」的地方的情況下)
但我仍然得到同樣的錯誤(即使刪除後高速緩存)。我知道我可以在項目中「手動」添加Pthread,或者在CMakeList.txt中定義一些常量,但我認爲這不是CMake的原理:我可以在所有系統上使用相同的「CMakeList.txt」,對吧?所以我怎麼告訴CMake「嘿!看這裏!Pthread在這個目錄!」。 也許Cmake沒有查找PATH,但是在另一個環境變量中,但是我沒有找到這個信息。
謝謝您的閱讀。
編輯:我不知道這是否有差別,但我的項目是一個C++項目(非C)
由於沒有標準在運行cmake-gui時,Windows CMake上include和庫文件的路徑經常需要幫助很長時間。第二個選擇是許多查找器查找環境變量。因此,例如在我的Windows安裝中找到ITK,我在啓動cmake-gui的cmd.exe會話中設置了ITK_DIR。許多軟件包也一樣。還有find_package選項,可以用來幫助控制CMake在哪裏尋找可以提供幫助的軟件包。 – drescherjm
在CMake 2.8.10中查看FindThreads的代碼,它看起來像在Windows上默認使用Windows線程。 – drescherjm
我沒有測試過。查看是否設置了CMAKE_USE_PTHREADS_INIT或者只是CMAKE_USE_WIN32_THREADS_INIT。 – drescherjm