Wie kann ich glfw C++ richtig installieren?
Hallo Leute,
ich programmiere schon eine Weile in C++ aber bisher immer mit Clion weil ich mit Visual Studio einfach nicht zurecht komme. Immer wieder wurde ich von irgendwelchen Fehlermeldungen geplagt und fand wochenlang keine Lösung, bis ich es dann irgendwann aufgab.
Umsteigen wollte ich eigentlich nur, um Third-Party Libraries wie glfw nutzen zu können, aktuell benutze ich nur mingw und kompiliere mit g++.exe ohne irgendwelche drittanbieter-Bibliotheken, weil ich es nie richtig hinbekomme, sie einzubinden.
Selbst wenn ich wie vorgegeben vorging, kam es zu unermütlichen Fehlermeldungen. Deshalb habe ich bis jetzt immer nur auf header onlys zurückgegriffen, merke aber gerade, dass ich ohne glfw nicht weiter komme.
Am liebsten würde ich verstehen, wie ich die Bibliothek richtig einbinde, sodass ich weiterhin mit g++ selbst kompiliere. Ich habe dann schon alle möglichen include Dateien in mingw geworfen und so weiter, aber jedes Mal erfolglos. Als ich das mal in Visual Studio probiert habe, kam es schon beim Startelement zu Problemen weil ich immer irgend einen Fehler mit dem Kompilieren und Ausführen mit Visual habe. Auch Bibliotheken ließen sich nicht ohne Fehlermeldungen installieren.
Ich muss aber jetzt in die gui programmierung einsteigen und habe glfw vorgegeben. Ich muss aber zugeben, dass ich wohl bei der Installation von solchen Bibliotheken ein absoluter Laie bin..
Kann mir jemand helfen, das zum Laufen zu bringen?
Stellt mir doch bitte gerne gezielte Rückfragen, was ihr genau noch wissen wollt, um meine Probleme zu verstehen.
Vielen Dank im Voraus!
Lukas Zander
hast du dir schon den build guide von GLFW durchgelesen und was hast du davon nicht verstanden?
Ja, ich habe das Ganze eingebunden aber bekomme die undefined reference nicht weg, egal was ich verlinke..
1 Antwort
Ist auch nicht ganz eionfach.
Ich verlinke einfach mal folgende Frage:
https://www.gutefrage.net/frage/clion-glfw-library-einbinden
Am besten fängst du ganz unten an und kopierst dir die neuste CMake-Datei. Wenn das nicht geht, fang oben an und arbeite dich einmal durch.
Ansonsten bezüglich Visual Studio:
Ich nutze üblicherweise folgendes Build-Script (in <Projektordner>/build legen und dort ausführen):
@echo off
setlocal
cd /d %~dp0
reg Query "HKLM\Hardware\Description\System\CentralProcessor\0" | find /i "x86" > NUL && set arch_command_length=32 || set arch_command_length=64
echo "%PROCESSOR_ARCHITECTURE%" | find /i "arm" > NUL && goto ARM || goto AMD
:ARM
IF %arch_command_length% == 32 (
set arch_string=x86_arm
set arch_command_length_string=x86
) ELSE (
set arch_string=amd64_arm64
set arch_command_length_string=x64
)
goto VC_VARC_INIT
:AMD
IF %arch_command_length% == 32 (
set arch_string=x86
set arch_command_length_string=x86
) ELSE (
set arch_string=amd64
set arch_command_length_string=x64
)
goto VC_VARC_INIT
:VC_VARC_INIT
call vcvarsall.bat %arch_string% -vcvars_ver=
set compiler_path=%VCToolsInstallDir%\bin\Host%arch_command_length_string%\%arch_command_length_string%\cl.exe
set linker_path=%VCToolsInstallDir%\bin\Host%arch_command_length_string%\%arch_command_length_string%\link.exe
set archiver_path=%VCToolsInstallDir%\bin\Host%arch_command_length_string%\%arch_command_length_string%\lib.exe
call "%DevEnvDir%\COMMONEXTENSIONS\MICROSOFT\CMAKE\CMake\bin\cmake.exe" -G "Ninja Multi-Config" -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DCMAKE_AR:FILEPATH="%archiver_path%" -DCMAKE_LINKER:FILEPATH="%linker_path%" -DCMAKE_INSTALL_PREFIX:PATH="%CD%\out\install" -DCMAKE_CXX_COMPILER:FILEPATH="%compiler_path%" -DCMAKE_C_COMPILER:FILEPATH="%compiler_path%" -DCMAKE_MAKE_PROGRAM="%DevEnvDir%\COMMONEXTENSIONS\MICROSOFT\CMAKE\Ninja\ninja.exe" "%CD%\.."
call "%DevEnvDir%\COMMONEXTENSIONS\MICROSOFT\CMAKE\CMake\bin\cmake.exe" --build . --target install --config Debug
Bzw. drei davon, eine für jede Konfiguration (in der letzten Zeile anpassbar).
Du musst nur schauen, dass vcvarsall.bat sich im PATH befindet. Dazu musst du einmal Visual Studio oder die Visual Studio Command-Line-Tools installieren und dann evtl. deine Systemvariable passend editieren.