Poppler Bibliothek kann nicht installiert werden



  • Ich möchte die poppler library installieren ( https://poppler.freedesktop.org/ ) um aus PDF Dateien Daten auslesen zu können. Allerdings kommt beim ausführen von cmake folgender Fehler.

    CMake Warning at CMakeLists.txt:98 (message):

    No test data found in $testdatadir.
    You will not be able to run 'make test' successfully.

    The test data is not included in the source packages
    and is also not part of the main git repository. Instead,
    you can checkout the test data from its own git
    repository with:

     git clone git://git.freedesktop.org/git/poppler/test
    

    You should checkout the test data as a sibling of your
    poppler source folder or specify the location of your
    checkout with -DTESTDATADIR=/path/to/checkoutdir/test.

    CMake Warning at CMakeLists.txt:160 (find_package):
    By not providing "FindGpgmepp.cmake" in CMAKE_MODULE_PATH this project has
    asked CMake to find a package configuration file provided by "Gpgmepp", but
    CMake did not find one.

    Could not find a package configuration file provided by "Gpgmepp"
    (requested version 1.19) with any of the following names:

    GpgmeppConfig.cmake
    gpgmepp-config.cmake
    

    Add the installation prefix of "Gpgmepp" to CMAKE_PREFIX_PATH or set
    "Gpgmepp_DIR" to a directory containing one of the above files. If
    "Gpgmepp" provides a separate development package or SDK, be sure it has
    been installed.
    Call Stack (most recent call first):
    CMakeLists.txt:168 (find_soft_mandatory_package)

    CMake Error at CMakeLists.txt:162 (MESSAGE):
    Could not find the 1.19 version of Gpgmepp. If you're not interested in
    the features it provides set the cmake ENABLE_GPGME option to OFF
    Call Stack (most recent call first):
    CMakeLists.txt:168 (find_soft_mandatory_package)

    -- Configuring incomplete, errors occurred!

    Selbst wenn ich jetzt: cmake .. -DTESTDATADIR= path to test eingebe kommt die Fehlermeldung obwohl der ordner da drin ist

    Ich habe git, cmake, ninja, alles auf neuster Version fehtl mir irgend eine Vorraussetzung noch oder wo könnte das Problem sein?



  • Hi,
    grundsätzlich passt das schon so. Wie ist der genaue Aufruf mit dem du baust? Du bist dir sicher, dass der Pfad, den du bei -DTESTDATADIR=... korrekt ist. Dort befindet sich auch die Datei test-poppler.c drin?

    Der Rest von deinem Output ist erstnal nur eine Warning. Ob du das brauchst musst du wissen. Falls nicht solltest du DENABLE_GPGME=OFF setzen.


  • Mod

    Wie oft willst du deine Frage denn noch in verschiedenen Foren wiederholen?



  • @SeppJ bis ich eine lösung habe



  • CMake Warning at CMakeLists.txt:160 (find_package):
    By not providing "FindGpgmepp.cmake" in CMAKE_MODULE_PATH this project has
    asked CMake to find a package configuration file provided by "Gpgmepp", but
    CMake did not find one.

    Could not find a package configuration file provided by "Gpgmepp"
    (requested version 1.19) with any of the following names:

    GpgmeppConfig.cmake
    gpgmepp-config.cmake
    

    Add the installation prefix of "Gpgmepp" to CMAKE_PREFIX_PATH or set
    "Gpgmepp_DIR" to a directory containing one of the above files. If
    "Gpgmepp" provides a separate development package or SDK, be sure it has
    been installed.
    Call Stack (most recent call first):
    CMakeLists.txt:168 (find_soft_mandatory_package)

    CMake Error at CMakeLists.txt:162 (MESSAGE):
    Could not find the 1.19 version of Gpgmepp. If you're not interested in
    the features it provides set the cmake ENABLE_GPGME option to OFF
    Call Stack (most recent call first):
    CMakeLists.txt:168 (find_soft_mandatory_package)

    -- Configuring incomplete, errors occurred!
    @Leon0402 Durch deine Hinweis konnte ich schonmal einen teil der Warnung eleminieren, vielen Dank dafür, bleiben nur noch die restlichen hier.



  • @liveyourproject Das ist doch die Warnung bzw. der Error von den ich gesprochen habe? Daher nochmal die Frage: Brauchst du Gpgmepp oder brauchst du es nicht? Wenn du es nicht brauchst ist die Lösung sehr einfach wie oben bereits geschrieben. Sie steht ja auch im Text drin 😉

    Could not find the 1.19 version of Gpgmepp. If you're not interested in
    the features it provides set the cmake ENABLE_GPGME option to OFF
    

    Und gerne darfst du source code, shell output etc. formattieren. Das macht es einfacher für uns.



  • @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).


  • @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:

    1. 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
    2. Dann habe ich VSC geöffnet und den Compiler Pfad auf C:/msys64/ucrt64/g++.exe gesetzt
    3. Im Anschluss habe ich dann ein kleines HelloWorld programm programmiert um zu sehen ob die standardbiliothek funktioniert und ja es funktionert.
    4. 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.
    5. 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 einer FindMyLib.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#L4

    Nicht 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?



  • 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.


Anmelden zum Antworten