CMake: pthread.h nicht in Windows gefunden

8

Ich bin Neuling bei CMake. Ich habe es unter Linux für ein Programm getestet, das ich mache. Dieses Programm verwendet (POSIX Threads lib), also habe ich in meiner CMakeList hinzugefügt:

%Vor%

Es funktioniert auf Linux-Distributionen (Arch, Mint, Ubuntu, ...), aber jetzt versuche ich es in Windows32 (Visual Studio 9 2008), und ich bekomme diese Nachricht während der Generierung:

%Vor%

(und wenn ich die Ausgabeprojektdatei kompiliere, wird pthread.h tatsächlich nicht gefunden).

Unter Windows, unter Berücksichtigung von "C: \ pthread" als mein pthread-Verzeichnis, habe ich im Pfad definiert:

  • "C: \ pthread \ include" (wo sich das berühmte "pthread.h" befindet)
  • "C: \ pthread \" (für den Fall, dass CMake irgendwo nach einem "include" sucht)

Aber ich bekomme immer noch den gleichen Fehler (selbst nach gelöschtem Cache). Ich weiß, dass ich "Ptdread" in meinem Projekt "manuell" hinzufügen oder einige Konstanten in CMakeList.txt definieren kann, aber ich denke, es ist nicht das Prinzip von CMake: Ich könnte die gleiche "CMakeList.txt" auf allen Systemen verwenden, richtig? Also wie kann ich CMake sagen "Hey! Sieht hier aus! Pthread ist in diesem Verzeichnis!". Vielleicht sieht Cmake nicht in PATH, sondern in einer anderen Umgebungsvariablen, aber ich habe diese Information nicht gefunden.

Danke fürs Lesen.

EDIT: Ich weiß nicht, ob es einen Unterschied macht, aber mein Projekt ist ein C ++ Projekt (nicht C)

    
Neozaru 04.11.2012, 12:46
quelle

3 Antworten

2

Was ich getan habe, habe ich die cmake-Datei bearbeitet:

%Vor%

und

%Vor%

(Ich verwende Google Test)

    
radato 05.04.2017 15:17
quelle
1

Anscheinend ist CMAKE_USE_WIN32_THREADS_INIT im Kontext aller Plattformen nützlich. Diese Variable wird beim Aufruf von findPackage (Threads) generiert oder initialisiert. Im Idealfall behandelt sie Probleme auf allen Plattformen, wenn die Thread-Bibliothek mit der ausführbaren Datei verknüpft werden muss. Im Grunde erzeugt es einen geeigneten Thread-Bibliotheksnamen auf Plattform-Unix-ähnlichen Plattformen und ist auf einer Plattform leer, wie z. B. bei Fenstern, wo keine explizite Threading-Bibliothek zum Verknüpfen benötigt wird. Referenz: CMake findThreads Ссылка

    
Saif Mulla 19.12.2015 12:33
quelle
0

Soweit ich weiß, wird Pthreads nicht nativ von der Windows-Plattform unterstützt. Es sei denn, Sie verwenden etwas wie

Win Services für Unix

Windows hat nur Win32-Threads.

Dies ist jedoch ein Projekt, das Pthreads unter Windows bereitstellt

pthreads auf win32

    
fayyazkl 04.11.2012 12:51
quelle