Poppler Bibliothek kann nicht installiert werden
-
@liveyourproject sagte in Poppler Bibliothek kann nicht installiert werden:
@SeppJ bis ich eine lösung habe
So funktioniert ein Forum aber nicht. Lies dir durch, wie man Fragen richtig stellt...
-
@liveyourproject sagte in Poppler Bibliothek kann nicht installiert werden:
@Leon0402 Ich danke dir für deine hilfe allerdings hat es auch nicht funktioniert die optionen auszuschalten denn dann kamen immer mehr optionen dazu die auch noch Warnungen machten und wenn ich alles ausgeschaltet hatte könnte es trotzdem nicht richtig compiliert werden und hat zum abbruch geführt.
Deshalb bin ich einen anderen Weg gegeganen und zwar die poppler bib. als Package über msys direkt zu downloaden, ich ich kann die header-dateien die ich benötige findne alles scheint gut installiert worden zu sein aber aus irgendeinem grund kann ich nicht richtig compilieren. die header werden angeblich nicht gefunden selbst wenn ich den pfad richtig angebe.
fatal error: poppler.h: No such file or directory
5 | #include <poppler.h>
| ^~~~~~~~~~~
compilation terminated.Build finished with error(s).
- The terminal process failed to launch (exit code: -1).
Sorry, wenn du Hilfe willst, musst du dich etwas mehr bemühen. Ich helfe dir gerne bei deinem ursprünglichen Problem, aber dann brauche ich genaue Infos wie du das Projekt kompilierst (kompletter Befehl) und den Output davon. Keiner kann hier hellsehen, dein Fehler ist maximal generisch und kann an allem möglichen liegen => Daher mehr Infos bitte.
Und meine persönliche Empfehlung wäre ja auch erstmal bei einem Ansatz zu bleiben und nicht gleich aufzugeben.
-
@Leon0402
Danke für deine Anregungen und Empfehlungen ich werde versuchen sie zu beherzigen, deshalb wollte ich einfach mal alles im detail:- zuerst habe ich msys2 heruntergeladen dann nutze ich dort das ucrt64 enviroment. Danach habe den Packagemanager eingerichtet, also pacman, gcc, g++, gdb, cmake(mit ninja generator) installiert. Die enviormentvariable habe ich auch gesetzt auf C:/msys64/ucrt64/bin
- Dann habe ich VSC geöffnet und den Compiler Pfad auf C:/msys64/ucrt64/g++.exe gesetzt
- Im Anschluss habe ich dann ein kleines HelloWorld programm programmiert um zu sehen ob die standardbiliothek funktioniert und ja es funktionert.
- Jetzt wollte ich die poppler bibliothek einbinden dazu habe ich msys geöffnet und über pacman -S mingw-w64-ucrt-x86_64-poppler das herunterladen lief auch einfwandfrei.
- Nun war ich der Meinung das es vllt schon so funktionieren könnte, allerdings hat es nicht funktioniert der Error kam wie bereits oben geschickt jetzt habe ich in c_cpp_propertiers.json "includePath": "C:/msys64/ucrt64/include/**
aber auch hier nach kann die header datei nicht gefunden obwohl unter include der poppler ordner vorhanden ist und darunter auch die poppler.h header datei.
Ich denke jetzt habe ich eigentlich alles aufgezeichnet wie ich vorgegangen bin.
Irgendwo vermute ich muss ich noch irgendwie den Pfad zu der bibliothek bekanntmachen?
-
@liveyourproject Von msys2 habe ich ehrlicherweise wenig Ahnung. Der wichtige Teil ist aber wie du kompilierst. VSC ist ja keine spezielle C++ IDE o.ä., daher ist eig. kompilieren erstmal Sache des Nutzers. Ich vermute mal, dass du die Standard C++ Extension hast und dann da irgendein Button drückst. Das wird vermutlich das sein:
https://code.visualstudio.com/docs/cpp/config-msvc#_run-helloworldcpp
Basierend auf der Beschreibung dort legt er einfach nur eine Konfiguration in "tasks.json" an. Also sprich du drückst auf einen Knopf und er führt das aus, was da drin steht im Hintergrund. Meine Vermutung wäre also, dass du auch dort den Include Pfad anpassen musst.
Die c_cpp_properties dagegegen ist nach meinem Verständnis nur für intellisense, jedoch nicht für das eigentliche kompilieren.
Ich würde an der Stelle einfach mal ein Terminal öffnen und von Hand kompilieren (nichts anderes machst du ja sowieso schon):g++ -Ipath/to/include -o output_filename main.cpp
Vermutlich musst du dann aber auch gegen die entsprechende library linken:
g++ -o output_filename main.cpp -Ipath/to/include -Lpath/to/library -llibrary_name
Wenn ich aber ehrlich bin, würde ich dir doch sehr stark dazu raten CMake zu nutzen wie in deinem Eingangspost. Manuell kompilieren ist wirklich nicht zeitgemäß. Da kann ich dir gerne auch mit deinen Warnings etc. helfen. Schick doch gerne nochmal dein setup mit CMake und wie du cmake aufrufst etc. und deinen Output.
-
@Leon0402 Danke dir für deine Hilfe ja es ist sehr aufwendig so das zu realsieren deshalb möchte ich jetzt deinem Rat folgen und Cmake nutzen mein konkretes Problem momenten ist darin folgendes:
Ich habe ersteinmal versucht das HelloWorld Programm mit folgender CMakeLists.txt zum laufne zu bringen:cmake_minimum_required(VERSION 3.28.1)
project(helloworld)
add_executable(helloworld helloworld.cpp)das hat auch prima funktioniert. Jetzt stellt sich mir allerdings dir Frage wie ich eine externe Bibliothek die ja quasi im C:/msys64/ucrt64/include/poppler liegt integrieren kann.
-
@liveyourproject sagte in Poppler Bibliothek kann nicht installiert werden:
@Leon0402 Danke dir für deine Hilfe ja es ist sehr aufwendig so das zu realsieren deshalb möchte ich jetzt deinem Rat folgen und Cmake nutzen mein konkretes Problem momenten ist darin folgendes:
Ich habe ersteinmal versucht das HelloWorld Programm mit folgender CMakeLists.txt zum laufne zu bringen:cmake_minimum_required(VERSION 3.28.1)
project(helloworld)
add_executable(helloworld helloworld.cpp)das hat auch prima funktioniert. Jetzt stellt sich mir allerdings dir Frage wie ich eine externe Bibliothek die ja quasi im C:/msys64/ucrt64/include/poppler liegt integrieren kann.
Klassischerweise hat man ja einserseits die includes (also die .h Dateien) und im Regefall auch die libraries (sofern es keine header only library ist), also .a, .so, .lib, .dll je nach Platform und statisch / dynamisch linken. Ich gehe zumindest mal davon aus, dass du Poppler installiert hast, d.h. binaries etc. hast, und das jetzt nicht nur soruce code ist, oder?
Bei CMake ist alles rund um eine Library in eine eigene Abstraktion "Target" gekappselt. Normalerweise funktioniert es also grob so:find_package(MyLib) add_executable(helloworld helloworld.cpp) target_link_libraries(helloworld PRIVATE mylib::mylib)
Bei Zeile 1 sucht er nach einer
MyLibConfig.cmake
oder nach einerFindMyLib.cmake
Datei, welche im Grunde die Target Definitionen enthält. Die erste Datei wird von (modernen) Projekten bereitgestellt und ist der empfohlene und bessere Weg. Die zweite Datei ist vom User (also von dir) erstellt und liegt in deinem Projekt, macht aber ansonsten das gleiche. In Zeile 3 wird dann gegen das target gelinkt und das setzt dann den include path, library path etc.Die erste Frage ist also erstmal, gibt es eine
PopplerConfig.cmake
Datei? Klassischerweise ist die in einem cmake subfolder, wenn sie existiert. Vlt. kannst du mal schauen bzw. sagen, was alles so in dem "poppler" subfolder drin ist? Bzw. existieren da ggf. auch noch ander Poppler Ordner?
-
@Leon0402 Also ich habe mal unter C:/msys64/ucrt64/bin libpoppler-cpp-0.dll und andere poppler-****.dll Dateien gefunden,
jedoch keine cmake datei. Im include/poppler Ordner sind nur header dateien zu finden.
-
@liveyourproject Das ist schade, dann gibt es vermutlich keine moderne Config dafür. Dann brauchst du wohl eine FindPoppler.cmake.
Die Datei ist selber geschrieben und da kann im wesentlichen alles drin stehen. Die Aufgabe ist aber, dass er darin nach der Library, Includes Files etc. sucht. Klassischerweise gibt es auch hier 2 Varianten:
- Es werden nur die Variablen
Poppler_LIBRARIES
,Poppler_INCLUDE_DIRS
etc. definiert - Es werden auch richtige Targets definiert (besser!)
Da man sowas ungern selber schreibt, suche ich einfach immer auf Github nach der entsprechenden Datei. Zum Beispiel findet man dann:
https://github.com/scribusproject/scribus/blob/9b947d519da6c067050ea93b4d65d0a0594c9b9d/cmake/modules/Findpoppler.cmake#L4Nicht so gut Keine Targets definiert.
Zum Beispiel gibt es die Datei aber auch von KDE https://api.kde.org/ecm/find-module/FindPoppler.html. Hier siehst du dann, dass ein Target
Poppler::<component>
definiert wird.Nutzung ist relativ einfach https://api.kde.org/ecm/manual/ecm-find-modules.7.html. Bist du auf Linux unterwegs und kannst ecm einfach einbinden?
- Es werden nur die Variablen
-
Danke dir für deine Hilfe aber ich habe mich nach reiflicher Überlegung doch entschlossen auf Visual Studio 2022 Community umzuschwenken und über vcpkg die Bibliotheken einzubinden, die ich brauche. Nach einigen Versuchen habe ich es tatsächlich geschafft die Poppler Bibliothek einzubinden. Und das auch ohne cmake aber mit vcpkg kann man auch Cmake nutzen. Deshalb fand ich es jetzt ersteinmal die beste Lösung für den Anfang. Wo ein wille ist, da ist auch ein Weg.
-
@liveyourproject sagte in Poppler Bibliothek kann nicht installiert werden:
Danke dir für deine Hilfe aber ich habe mich nach reiflicher Überlegung doch entschlossen auf Visual Studio 2022 Community umzuschwenken und über vcpkg die Bibliotheken einzubinden, die ich brauche. Nach einigen Versuchen habe ich es tatsächlich geschafft die Poppler Bibliothek einzubinden. Und das auch ohne cmake aber mit vcpkg kann man auch Cmake nutzen. Deshalb fand ich es jetzt ersteinmal die beste Lösung für den Anfang. Wo ein wille ist, da ist auch ein Weg.
Sicher, vcpk ist auch eine Lösung Würde ich dann persönlich auch mit cmake nutzen. Projekte, die nur in VS gehen sind ja irgendwie doof und bisschen unmodern.