Ich habe ein CMake-Projekt, das OpenMP verwendet und unter Linux arbeitet. Als ich es auf meinem Windows-Rechner kompilieren wollte, sah es so aus, als ob CMake Probleme hatte, die openmp-Flags für mingws gcc zu finden.
Ich entschied mich, einen kleineren Testfall zu versuchen und main_openmp.c
einfach zu kompilieren %Vor%Wenn ich dann versuche,
zu kompilieren %Vor%Ich bekomme
%Vor%Ich habe versucht, die Lösung online zu finden und versuchte Varianten von -lgomp, -lpthreadgc2 und -lpthreadvc2, ohne Verbesserung.
Ich habe mein Verzeichnis C: \ MinGw rekursiv nach Dateinamen mit lpthread durchsucht und habe Folgendes erhalten:
%Vor%Ich bin mir nicht sicher, ob ich eine Flagge oder ein Paket vermisse oder was ich falsch mache. Als gutes Maß ist hier die Ausgabe von gcc -v
%Vor%Irgendeine Idee, was ist los?
Ich war endlich in der Lage, Dinge zum Laufen zu bringen.
Zuerst benutze ich mingw-get und installiere mingw32-pthreads-w32
Damit konnte ich das Flag -fopenmp mit gcc verwenden.
Aber bei der Verwendung von CMake musste ich die Zeilen einfügen:
%Vor%als normal, aber ich musste auch sicherstellen, dass ich die OpenMP_CXX_FLAGS in meinem target_link_libraries Befehl
hatte %Vor% In Ihrer CMakeLists.txt
-Datei sollten Sie Folgendes verwenden:
Wenn Sie bei der Konfiguration von cmake einen Fehler erhalten, bedeutet dies, dass Sie nicht über die erforderlichen Bibliotheken verfügen, oder dass CMake sie nicht finden kann. Wenn Sie die Bibliotheken haben und cmake sie nicht finden kann, stellen Sie sicher, dass der Suchpfad festgelegt ist:
%Vor%Sie können versuchen, eine "Toolchain" -Datei wie hier beschrieben zu erstellen .
Ich würde auch vorschlagen, dass Sie mingw-w64 für Cross-Compiling für Windows versuchen. Ich verwende es erfolgreich für 32-Bit- und 64-Bit-Anwendungen. Ich benutze mingw [32/64] -cmake, und dann funktioniert alles.
Ich verwende Fedora 19 und 20, und einige Pakete, die für Ihre Frage relevant sind, sind (für 32-Bit):
%Vor%