Jestem początkującym użytkownikiem programu CMake. Przetestowałem to na Linuksie dla programu, który robię. Ten program używa (POSIX Threads lib), więc w moim CMakeList, dodałem:CMake: <pthread.h> nie znaleziono w systemie Windows
find_package(Threads)
Działa na distribs Linuksa (Arch, Mint, Ubuntu, ...), ale teraz próbuję go w Windows32 (Visual Studio 9 2008), i ten komunikat podczas generowania:
-- Looking for include file pthread.h - not found
(i kiedy mogę skompilować plik projektu wyjściowego, pthread.h rzeczywiście nie znaleziono).
W Windows, biorąc pod uwagę "C: \ pthread" w moim katalogu pthread, że określony w ścieżce:
- "C: \ pthread \ include" (gdzie znajduje się słynny "pthread.h")
- „C: \ pthread \” (w przypadku, gdy CUpewnij wyszukuje „obejmują” gdzieś)
Ale nadal ten sam błąd (nawet po usunięte cache). Wiem, że mogłem "ręcznie" dodać Pthread do mojego projektu lub zdefiniować pewne stałe w CMakeList.txt, ale myślę, że to nie jest zasada CMake: mógłbym użyć SAME "CMakeList.txt" na wszystkich systemach, prawda? Więc jak mogę powiedzieć CMake'owi: "Hej, wygląda tutaj! Pthread jest w tym katalogu!". Może Cmake nie wygląda w PATH, ale w innej zmiennej środowiskowej, ale nie znalazłem tej informacji.
Dziękuję za przeczytanie.
EDIT: Nie wiem, czy to robi różnicę, ale mój projekt jest projektem C++ (nie C)
Ponieważ nie ma standardu Ścieżki do plików włączeń i bibliotek w oknach CMake często musi być wspomagane przez długi czas, gdy uruchomisz cmake-gui. Druga opcja polega na tym, że wielu poszukiwaczy wygląda w zmiennych środowiskowych. Na przykład, aby znaleźć ITK na mojej instalacji Windows, mam ITK_DIR ustawiony w sesji cmd.exe, z której uruchomiłem cmake-gui. To samo dotyczy wielu pakietów. Dostępne są również opcje find_package, które możesz wykorzystać do sterowania miejscem, w którym CMake szuka pakietów, które mogą być pomocne. – drescherjm
Patrząc na kod dla FindThreads w CMake 2.8.10 wygląda na to, że w systemie Windows domyślnie będzie używany wątek Windows. – drescherjm
Nie przetestowałem tego. Sprawdź, czy ustawiono CMAKE_USE_PTHREADS_INIT lub po prostu CMAKE_USE_WIN32_THREADS_INIT. – drescherjm