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:
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)
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 Ссылка