CLion GLFW library einbinden?

1 Antwort

Vom Beitragsersteller als hilfreich ausgezeichnet

Installier dir doch glfw auf deinem System und lass CMake die Bibliotheken finden:

https://www.glfw.org/docs/3.3/build_guide.html#build_link_cmake_package

Dein Include dürfte dann einfach nur

#include <GLFW/glfw3.h>

https://www.glfw.org/docs/3.0/build.html


CloudBeta 
Beitragsersteller
 02.11.2022, 13:07

Hallo irgendwie klappt das bei mir nicht...

Ich habe halt garkeine ahnung davon.

Ich habe jetzt das in cmake probiert aus dem ersten link


find_package(glfw3 3.3 REQUIRED)

target_link_libraries(Tesst glfw)

Hat nicht geklappt. dann habe ich noch aus dem zweitem link add_subdirectory()

und da C:\Users\alpha\OneDrive\Dokumente\GLFW eingefügt was der ordner mit dem glfw-3.3-8-bin.WIN64 drin ist. Hat alles nicht funktioniert

Also bei dem add_subdir sagt er mir direct wenn ich \ eingeben einen Fehler

Destranix  02.11.2022, 13:48
@CloudBeta
Hat nicht geklappt.

Welche Fehlermeldung?

Hast du GLFW auf deinem System installiert und befindet sich passende Environment-Variablen im PATH?

Also bei dem add_subdir sagt er mir direct wenn ich \ eingeben einen Fehler

Versuch es mit '/' statt '\'.

Außerdem würde ich wenn dann die Library zum Projekt hinzufügen und den Pfad relativ angeben.

CloudBeta 
Beitragsersteller
 02.11.2022, 16:59
@Destranix

Was heist denn installiert? Was muss ich denn installieren? Ich habe nur die zip entpackt!

CloudBeta 
Beitragsersteller
 02.11.2022, 19:48
@Destranix

Ich verstehe nicht ganz was die da schreiben... Und von wo bis wo ich lesen muss Kannst du mir nicht einfach sagen was ich schreiben muss? 😅 Du hast ja die datein die ich habe da kannst du doch wissen was ich schreiben muss oder? (keine ahnung warum das jetzt dick geschrieben ist)

Destranix  02.11.2022, 20:03
@CloudBeta

Schau mal hier:

https://stackoverflow.com/questions/54834826/cannot-find-package-glfw-using-cmake

Hol dir die verlinkte Datei von

https://github.com/JoeyDeVries/LearnOpenGL/blob/master/cmake/modules/FindGLFW3.cmake

und packe sie an die passende Stelle.
Dann fügst du in deiner CMakeList.txt folgendes hinzu:

list(APPEND CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake")

Deine Bibliothek installierst du unter

"${CMAKE_SOURCE_DIR}/includes" 

Das Script ist nicht optimal, aber sollte tun, was du willst.

CloudBeta 
Beitragsersteller
 02.11.2022, 20:46
@Destranix

Ja klappt garnicht... Vermutlich muss ich phade angleichen aber finde keine richtigen. er sagt sogar schon "By not providing "Findglfw3.cmake" :( Ich verstehe das garnicht welche pfade muss ich anpoassen und wo muss ich die datei reinlegen

CloudBeta 
Beitragsersteller
 02.11.2022, 20:58
@Destranix

Hab oben geschrieben hab es in die project folde probiert und in CMakeFiles wo es auch sinn macht

Project:ourcce_dir ist in C:/Users/alpha/OneDrive/Desktop/Tesst

Destranix  02.11.2022, 21:01
@CloudBeta

Und in

C:/Users/alpha/OneDrive/Desktop/Tesst/cmake

ligt die Find.cmake?

Und du hast

list(APPEND CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake")

noch vor dem find_package stehen?

Destranix  02.11.2022, 21:10
@CloudBeta

Soweit ich das sehe ist der Find.cmake-File nicht unter "/cmake", sondern unter "/cmake/api", evtl. macht das Probleme?

Ansonsten schau mal ob du in den Find.cmake-File eine Ausgabe packen kannst und was die dir liefert.

Ich schaue mir das dann morgen weiter an.

CloudBeta 
Beitragsersteller
 02.11.2022, 21:13
@Destranix

Ist nicht in api wenn man genau hinschaut.

Und 
message(STATUS Find.cmake-File)

gibt einfach nur -- Find.cmake-File aus es macht auch erst ab der zeile 8 also bei find_package() probleme

Destranix  03.11.2022, 08:10
@CloudBeta

Ist ja klar, dass du da nur die Ausgabe bekommst.

Ich meine, du sollst mal den Findglfw.cmake editieren und da ein message reinpacken und schauen, ob du eine Ausgabe erhälst. Wenn nicht, dann wird der File nicht ausgeführt, wenn doch, dann wird er ausgeführt.
Je nachdem, was der Fall ist, müsste man an einer anderen Stelle weiter suchen.

Ist nicht in api wenn man genau hinschaut.

Ich habe mehrmals genau hingeschaut. Das Icon des Files ist auf selber Höhe wie "v1", liegt somit in api, sofern die Anzeige nicht kaputt ist.

CloudBeta 
Beitragsersteller
 03.11.2022, 14:45
@Destranix

Also das ist ein ausschnitt aus dem Bild und ich finde hier sieht man es 😅 ist jetzt nicht böse gemeint (wieder dick keine ahnung warum)

Wenn ich zuhause bin versuch ich das mal in die cmake file zu schreiben.

Aber muss ich nicht wirklich irgendeinen pfad anpassen? Der weiß doch garnicht wo ich die librarie hingelegt habe?

Destranix  03.11.2022, 16:55
@CloudBeta
Aber muss ich nicht wirklich irgendeinen pfad anpassen? Der weiß doch garnicht wo ich die librarie hingelegt habe?

Deshalb sagte ich ja, du sollst die in einen bestimmten ordner packen. Aber ja, im ZWeifelsfalle passt du die Pfade in Find.cmake an, portabler wäre es aber wohl, die Dateien selbst in das passende Directory zu packen.

CloudBeta 
Beitragsersteller
 03.11.2022, 17:19
@Destranix

Ja das problem ist ich weis nicht wo die das hatten und ich weis nicht welche pfade in anpassen muss... wo ist das alles


        "/usr/include"
        "/usr/local/include"
        "${CMAKE_SOURCE_DIR}/includes"
        "C:/Program Files (x86)/glm" )

und muss ich dieüberhaubt anpassen oder andere

Destranix  03.11.2022, 17:22
@CloudBeta

Du packst die Header am besten in/unter

"${CMAKE_SOURCE_DIR}/includes"

und die Libs in/unter

"${CMAKE_SOURCE_DIR}/lib"
CloudBeta 
Beitragsersteller
 03.11.2022, 18:21
@Destranix

Jetzt habe ich den include ordner aus der librarie in Tesst/ gepackt also sind die .h jetzt in Tesst/include/GLFW/ und die libraries also sowas wie lib-vc2022 sind jetzt in Tesst/lib/.

Die FindgGLFW3.cmake datei ist in Tesst/.cmake/

Der inhalt ist:

cmake_minimum_required(VERSION 3.23)
project(Tesst)

set(SOURCE_FILES main.cpp) # welche Dateien kompiliert werden sollen

list(APPEND CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake")

find_package(cmake REQUIRED)

add_executable(Tesst main.cpp)

Vielleicht hilft ja auch der ganze Fehler:

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

Could not find a package configuration file provided by "cmake" with any of
the following names:

cmakeConfig.cmake
cmake-config.cmake

Add the installation prefix of "cmake" to CMAKE_PREFIX_PATH or set
"cmake_DIR" to a directory containing one of the above files.  If "cmake"
provides a separate development package or SDK, be sure it has been
installed.
Destranix  03.11.2022, 18:45
@CloudBeta

Alle Projekte, die auf meiner Platte liegen und glfw verwenden bauen sich das offenbar direkt aus den Source.

Beispiel:

https://github.com/KhronosGroup/Vulkan-Hpp

Dann ist das Includen aber evtl. komplizierter, evtl. finden sich noch andere Beispiele online.

Eines der Projekte hat glfw im ordner "/external/glfw" und baut das wiefolgt in der CMakeLists.txt:

##############################################################################
# GLFW
##############################################################################

set(GLFW_SOURCE_DIR  "external/glfw")

set(BUILD_SHARED_LIBS OFF CACHE BOOL "")
set(GLFW_BUILD_EXAMPLES OFF CACHE BOOL "")
set(GLFW_BUILD_TESTS OFF CACHE BOOL "")
set(GLFW_BUILD_DOCS OFF CACHE BOOL "")
set(GLFW_INSTALL OFF CACHE BOOL "")

add_subdirectory(external/glfw)

include_directories(external/glfw/include
                    external/glfw/deps)

Include geht dann offenbar mit

#include <GLFW/glfw3.h>
CloudBeta 
Beitragsersteller
 03.11.2022, 19:27
@Destranix

Ich verstehe garnichts mehr... Warum haben die in YT videos nicht diese Probleme? Wie hast du es denn damals gemacht? Muss doch bei mir genau so klappen

Destranix  03.11.2022, 19:29
@CloudBeta

Ich musste das nie selber Includen, das haben die APIs immer selber gemacht glaube ich.

Aber habe dir hier geschrieben, wie die das offenbar gemacht haben.

Im YouTube-Video haben die vermutlich irgendwie GLFW bereits so installiert (mit einem Package-Manager unter Linux zum Beispiel).

CloudBeta 
Beitragsersteller
 03.11.2022, 20:04
@CloudBeta

Wenn ich das so eingebe und die include und lib-vc2022 und das andere zeug in Tesst/external mache und den code von der nachricht von dir in die CMakeFile eingebe kommt

CMake Error at CMakeLists.txt:14 (add_subdirectory):

 The source directory

  C:/Users/alpha/OneDrive/Desktop/Tesst/external/glfw

 does not contain a CMakeLists.txt file.

Destranix  03.11.2022, 20:32
@CloudBeta
ber es gibt kein #include <GL... da kommt schion nichts mehr und bei dem ganzem statement sagt er halt gibt es nicht

Schreib mal hin und schau, ob es compiliert. *daumendrück*

CloudBeta 
Beitragsersteller
 03.11.2022, 20:35
@Destranix

FAILED: Tesst.exe 

cmd.exe /C "cd . && C:\msys64\mingw64\bin\c++.exe -g CMakeFiles/Tesst.dir/main.cpp.obj -o Tesst.exe -Wl,--out-implib,libTesst.dll.a -Wl,--major-image-version,0,--minor-image-version,0 -lkernel32 -luser32 -lgdi32 -lwinspool -lshell32 -lole32 -loleaut32 -luuid -lcomdlg32 -ladvapi32 && cd ."

C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/12.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: CMakeFiles/Tesst.dir/main.cpp.obj: in function `main':

C:\Users\alpha\OneDrive\Desktop\Tesst/main.cpp:76: undefined reference to `glfwInit'

collect2.exe: error: ld returned 1 exit status

ninja: build stopped: subcommand failed.

:(

Aber rot ist es nicht (also im code fenster)

Das wichtigste:

C:\Users\alpha\OneDrive\Desktop\Tesst/main.cpp:76: undefined reference to `glfwInit'

Destranix  03.11.2022, 20:38
@CloudBeta

Ah gut die Includes findet er, jetzt muss er nur noch dei Bibliothek mitlinken.

Ich glaube ein

target_link_libraries(<target> ${GLFW_LIBRARIES})

fehlt noch irgendwo.

CloudBeta 
Beitragsersteller
 03.11.2022, 20:40
@Destranix

Was kommt als target rein? Tesst geht nicht 😅

CloudBeta 
Beitragsersteller
 03.11.2022, 20:45
@Destranix

CMake Error at CMakeLists.txt:19 (target_link_libraries):

 Cannot specify link libraries for target "main.cpp" which is not built by

 this project.

ninja: error: rebuilding 'build.ninja': subcommand failed

-- Configuring incomplete, errors occurred!

See also "C:/Users/alpha/OneDrive/Desktop/Tesst/CMakeFiles/CMakeOutput.log".

FAILED: build.ninja 

Die exe ist main.exe

Destranix  03.11.2022, 20:47
@CloudBeta

Dann nimmst du "main.exe" oder "main.cpp".

Allerdings steht oben in der fehlermeldung "Tesst.exe" als Output.

CloudBeta 
Beitragsersteller
 03.11.2022, 20:50
@Destranix

Also ich bin mir schon sicher das es die main.exe ist ist das nicht das default bei CLion?

set(SOURCE_FILES main.cpp)
add_executable(Tesst main.cpp)

Und ich habe mani.exe und main.cpp versucht

Und eine Tesst.exe gibt es nur in cmake-build-debug und wenn ich das eingebekommt auch not build by this project

CloudBeta 
Beitragsersteller
 03.11.2022, 21:05
@CloudBeta

Okay wenn ich n ach add_exe das mache sagt er bei Tesst keinen Fehler. Allerdings findet er glfwInit immernoch nicht.

Destranix  04.11.2022, 07:44
@CloudBeta
Also ich bin mir schon sicher das es die main.exe ist ist das nicht das default bei CLion?

Keine Ahnung, was der Default ist. bNach deinem Command ist es aber auch "Tesst.exe".

Allerdings findet er glfwInit immernoch nicht.

Kannst du noch einmal die ganze fehlermeldung posten. Der Befehl, der oben steht, ist relevant dabei, insbesondere die Library-Flags dahinter.

CloudBeta 
Beitragsersteller
 04.11.2022, 08:49
@Destranix

Okay hier ist es jetzt:

"C:\Program Files\JetBrains\CLion 2022.2.4\bin\cmake\win\bin\cmake.exe" --build C:\Users\alpha\OneDrive\Desktop\Tesst --target Tesst -j 9

[1/1] Linking CXX executable Tesst.exe

FAILED: Tesst.exe 

cmd.exe /C "cd . && C:\msys64\mingw64\bin\c++.exe -g CMakeFiles/Tesst.dir/main.cpp.obj -o Tesst.exe -Wl,--out-implib,libTesst.dll.a -Wl,--major-image-version,0,--minor-image-version,0 external/glfw/src/libglfw3.a -lopengl32 -lkernel32 -luser32 -lgdi32 -lwinspool -lshell32 -lole32 -loleaut32 -luuid -lcomdlg32 -ladvapi32 && cd ."

C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/12.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: CMakeFiles/Tesst.dir/main.cpp.obj: in function `main':

C:\Users\alpha\OneDrive\Desktop\Tesst/main.cpp:77: undefined reference to `__imp_glfwInit'

C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/12.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:\Users\alpha\OneDrive\Desktop\Tesst/main.cpp:79: undefined reference to `__imp_glfwTerminate'

collect2.exe: error: ld returned 1 exit status

ninja: build stopped: subcommand failed.

Destranix  04.11.2022, 09:03
@CloudBeta

Also er versucht auf jeden Fall irgendwie glfw mitzulinken.

Ersteinmal generell eine Sache: Bei mir habe ich nie etwas auf Windows sinnvoll mit gcc bauen können, das allein kann schon Probleme machen.

Das scheint hier auch ein Problem zu sein:

https://stackoverflow.com/questions/22623087/undefined-reference-errors-when-linking-glfw-on-mingw

Offenbar muss man es irgendwie hinbekommen, dass gcc das Ding nicht ".a" nennt, sondern ".dll".

Versuch mal irgendwo folgendes zu setzen:

https://cmake.org/cmake/help/v3.0/variable/CMAKE_STATIC_LIBRARY_SUFFIX.html

https://cmake.org/cmake/help/v3.0/variable/CMAKE_SHARED_LIBRARY_SUFFIX.html

Jeweils auf entsprechend ".dll" und ".lib".

CloudBeta 
Beitragsersteller
 04.11.2022, 09:40
@Destranix

Ich verstehe das nicht... Es gibt in CMakeLists

CMAKE_STATIC_LIBRARY

Und ich habe gestern das ganze project durchgeschaut und nicht eine .a file gefunden

Destranix  04.11.2022, 12:01
@CloudBeta

Das ist eine Variable, die gesetzt werden soll:

set(CMAKE_STATIC_LIBRARY ".lib");
set(CMAKE_SHARED_LIBRARY ".dll");

Die ".a"-Files baut CMake als Zwischenprodukt selbst (und findet sie dann offenbar nicht mehr).

CloudBeta 
Beitragsersteller
 04.11.2022, 12:49
@Destranix

Ich hab das jetzt eingegeben aber er sagt immernco das selbe. Ich habe jetzt übrigens eine a datei gefunden.

Aber es ist die iibglfw3.a

CloudBeta 
Beitragsersteller
 04.11.2022, 12:52
@CloudBeta

Und wenn ich sie entferne wie es da steht in deinem Link passiert auch nichts.

Destranix  04.11.2022, 12:54
@CloudBeta

Auch noch dasselbe Command in der Fehlermeldung?

Setz mal folgende Flag:

GLFW_DLL

Mittels:

set(GLFW_DLL ON CACHE BOOL "")

Oder evtl. auch ohne den Teil hinter "CACHE", keine Ahnung, was der bewirkt.

CloudBeta 
Beitragsersteller
 04.11.2022, 13:03
@Destranix

Nein... nichts :( hier die ganze CMakeLists.txt vielleicht ist ja irgendwas falsch

cmake_minimum_required(VERSION 3.23)
project(Tesst)

set(SOURCE_FILES main.cpp) # welche Dateien kompiliert werden sollen


set(GLFW_SOURCE_DIR  "external/glfw")

set(BUILD_SHARED_LIBS OFF CACHE BOOL "")
set(GLFW_BUILD_EXAMPLES OFF CACHE BOOL "")
set(GLFW_BUILD_TESTS OFF CACHE BOOL "")
set(GLFW_BUILD_DOCS OFF CACHE BOOL "")
set(GLFW_INSTALL OFF CACHE BOOL "")
set(GLFW_DLL ON CACHE BOOL "")

set(CMAKE_STATIC_LIBRARY ".lib")
set(CMAKE_SHARED_LIBRARY ".dll")

add_subdirectory(external/glfw)
include_directories(external/glfw/include external/glfw/deps)

add_executable(Tesst main.cpp)

target_link_libraries(Tesst glfw)
CloudBeta 
Beitragsersteller
 04.11.2022, 13:08
@Destranix

Wie gesagt immernoch das genau gleiche:

FAILED: Tesst.exe 

cmd.exe /C "cd . && C:\msys64\mingw64\bin\c++.exe -g CMakeFiles/Tesst.dir/main.cpp.obj -o Tesst.exe -Wl,--out-implib,libTesst.dll.a -Wl,--major-image-version,0,--minor-image-version,0 external/glfw/src/libglfw3.a -lkernel32 -luser32 -lgdi32 -lwinspool -lshell32 -lole32 -loleaut32 -luuid -lcomdlg32 -ladvapi32 && cd ."

C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/12.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: CMakeFiles/Tesst.dir/main.cpp.obj: in function `main':

C:\Users\alpha\OneDrive\Desktop\Tesst/main.cpp:77: undefined reference to `__imp_glfwInit'

C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/12.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:\Users\alpha\OneDrive\Desktop\Tesst/main.cpp:79: undefined reference to `__imp_glfwTerminate'

collect2.exe: error: ld returned 1 exit status

ninja: build stopped: subcommand failed.

Destranix  04.11.2022, 13:13
@CloudBeta

Lösch mal das Directory, das CMake erstellt und den Cache-File und versuch es noch einmal. Aus irgendwelchen Gründen nimmt er weiterhin die statische Library.

Evtl. kannst du auch mal folgendes ausschalten und schauen, ob es dann geht:

set(BUILD_SHARED_LIBS OFF CACHE BOOL "")

Evtl. kann es aber auch sein, dass du deinen "target_link_library" Call umändern musst:

target_link_libraries(myapp glfw ${GLFW_LIBRARIES})

Hier steht auch noch mehr dazu, da kann man dann noch etwas rumprobieren:

https://www.glfw.org/docs/3.0/build.html

CloudBeta 
Beitragsersteller
 04.11.2022, 13:24
@Destranix

Ja also dieser ordner ist leer also war er schon vorher

Destranix  04.11.2022, 13:25
@CloudBeta

Lösch ihn trotzdem mit. Der Cache ist das wichtigere, ich will nur, das CMake noch einmal neu baut.

CloudBeta 
Beitragsersteller
 04.11.2022, 13:27
@Destranix

Habe jetzt das

#set(BUILD_SHARED_LIBS OFF CACHE BOOL "")

auskommentiert und das targetlinklibr zu


target_link_libraries(Tesst glfw ${GLFW_LIBRARIES})

Und den CMakeFiles gelöscht aber passiert immernoch das Gleiche.

Destranix  04.11.2022, 13:30
@CloudBeta

Auch noch mit dem selbem Command in der Fehlermeldung?

Dann ändere mal zu

target_link_libraries(myapp -lglfw3)
CloudBeta 
Beitragsersteller
 04.11.2022, 13:32
@Destranix

Ah jetzt kommt etwas anderes!
"C:\Program Files\JetBrains\CLion 2022.2.4\bin\cmake\win\bin\cmake.exe" --build C:\Users\alpha\OneDrive\Desktop\Tesst --target Tesst -j 9

[1/1] Linking CXX executable Tesst.exe

FAILED: Tesst.exe 

cmd.exe /C "cd . && C:\msys64\mingw64\bin\c++.exe -g CMakeFiles/Tesst.dir/main.cpp.obj -o Tesst.exe -Wl,--out-implib,libTesst.dll.a -Wl,--major-image-version,0,--minor-image-version,0 -lglfw3 -lkernel32 -luser32 -lgdi32 -lwinspool -lshell32 -lole32 -loleaut32 -luuid -lcomdlg32 -ladvapi32 && cd ."

C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/12.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: cannot find -lglfw3: No such file or directory

collect2.exe: error: ld returned 1 exit status

ninja: build stopped: subcommand failed.

Destranix  04.11.2022, 13:33
@CloudBeta

Mach mal

#set(BUILD_SHARED_LIBS ON CACHE BOOL "")

oder versuch es mit

target_link_libraries(myapp -lglfw)
CloudBeta 
Beitragsersteller
 04.11.2022, 13:38
@Destranix

Ja er sagt immernoch cannot find -lglfw: No such file or directory

Destranix  04.11.2022, 13:41
@CloudBeta

Hm, okay. Dann versuch es mal mit:

target_link_libraries(Tesst /external/glfw/glfwdll.lib)

Oder so ähnlich, sollte halt der Paf zu deiner Library sein.

Destranix  04.11.2022, 13:42
@CloudBeta

Die Includes funktionieren ja, also wird es denke ich nicht an der ordnerstruktur liegen.

CloudBeta 
Beitragsersteller
 04.11.2022, 13:45
@Destranix

Darum hab ich ja gemeint das man es manchmal nicht siht

Aber du siehst ja in external/glfw/sind nur ordner und keine lib dtei

Destranix  04.11.2022, 13:47
@CloudBeta

Ah und da ich es erst jetzt sehe:

set(CMAKE_STATIC_LIBRARY ".lib")
set(CMAKE_SHARED_LIBRARY ".dll")

zu

set(CMAKE_STATIC_LIBRARY_SUFFIX ".lib")
set(CMAKE_SHARED_LIBRARY_SUFFIX ".dll")

vielleicht geht es dann.

Destranix  04.11.2022, 13:48
@CloudBeta
Aber du siehst ja in external/glfw/sind nur ordner und keine lib dtei

Deshalb musst du selber schauen, wo die liegt.

Destranix  04.11.2022, 13:58
@CloudBeta

Dann heißt die halt anders, musst du manuell schauen. Wahrscheinlich unter "external/glfw/src".

CloudBeta 
Beitragsersteller
 04.11.2022, 16:57
@Destranix

Also bei mir gibt es einfach keine lib und keine dll datei mehr...

Destranix  04.11.2022, 17:03
@CloudBeta

Hm, okay. Naja, schau mal, ob es eine ".so"-Datei gibt oder nehm die ".a"-Datei.

Auf das Google-Dingens kann ich nicht zugreifen.

Destranix  04.11.2022, 18:08
@CloudBeta

Dann gib mal den Pfad zur ".a"-Datei an, vielleicht geht das.

Ansonsten kann man schauen, ob man irgendwie Shared Libraries erzeugen kann und es damit klappt. Oder man Versucht es über Pkg oder spielt noch etwas mit den FLAGS rum.
Ist echt ein Gefummel, eigentlich müsste das schon längst gehen.
Ich würde insgesamt auch eher dazu raten, nicht MinGW zu nutzen, außer es ist unbedingt nötig, aber ich weiß nicht, ob das mit dem Windows-Compiler besser ginge.

CloudBeta 
Beitragsersteller
 04.11.2022, 18:35
@Destranix

Du meinst so?


target_link_libraries(Tesst external/glfw/src/libglfw3.a)

Geht nicht... kommt das selbe

Destranix  04.11.2022, 18:44
@CloudBeta

Hm, okay.

Wenn du

set(BUILD_SHARED_LIBS ON CACHE BOOL "")

machst, bekommst du dann eine ".so" Datei?

oder

target_link_libraries(Tesst ${GLFW3_LIBRARY} glfw)

(Anderer Name der Environment-Variable)

CloudBeta 
Beitragsersteller
 04.11.2022, 18:47
@Destranix

Also das war die ganze zeit auf on und jetzt mit dem targetlinklib kommt wieder:

undefined reference to `__imp_glfwInit'

Destranix  04.11.2022, 18:52
@CloudBeta

Ah okay, dann versuch es mal hiermit:

set(GLFW_LIBRARY_TYPE SHARED)
CloudBeta 
Beitragsersteller
 05.11.2022, 14:26
@Destranix

Em... ich habe jezt grade meine Festplatte in einen Anderen PC gesteckt und da sah es zuerst so aus als hätte es funktioniert. Aber daan hat avira das geblockt. Dann musste ich den PC neustarten weil Avira sich nicht öffnen wollte und jetzt kommt

Process finished with exit code -1073741515 (0xC0000135)

Destranix  05.11.2022, 14:31
@CloudBeta

Das auf einem Computer zu bauen und auf dem anderem auszuführen kann leicht schiefgehen. Besser du baust das auf dem anderem Rechner komplett neu (sprich überträgst die CMakeFiles und den Cahce nicht bzw. löschst diese, auch in allen Unterordnern).

EDIT:

Bzw. geht evtl.:

cmake --target clean
CloudBeta 
Beitragsersteller
 05.11.2022, 14:35
@Destranix

Wo gebe ich eigendlich diese commands ein? Und neu bauen würde sich jetzt nicht lohnen ich bin nur 2 Tage hier

Destranix  05.11.2022, 14:38
@CloudBeta

Das gibst du in der MinGW-Konsole ein (wo die ist, kann ich dir nicht sagen).
Vielleicht hat deine IDE auch irgendwo extra einen Button dafür das aufzuräumen.

Und neu bauen musst du, sonst geht es nicht, ist auch kein Aufwand.

CloudBeta 
Beitragsersteller
 05.11.2022, 14:46
@Destranix

Aber er weis ja nicht was er aufräumen soll? Also er sagt halt cmake not found.

Ich bin wie gesagt neu

Destranix  05.11.2022, 14:49
@CloudBeta

Cmake weiß, was es aufräumen soll. Aber natürlöich muss cmake erst einmal existieren, wnen du das nicht installiert hast, dann wird das nicht gehen.

CloudBeta 
Beitragsersteller
 05.11.2022, 15:02
@CloudBeta

Okay und jetzt sagt er mir Unknown argument --target

CloudBeta 
Beitragsersteller
 05.11.2022, 15:07
@Destranix

nein... auch nicht aber cmake --version geht also ist es installiert

Destranix  05.11.2022, 15:08
@CloudBeta

Dann schau mal, ob in deinem Projekt ein "build"-Ordner ist und lösch den manuell. Wenn nicht, dann versuch einfach mal ganz normal das bauen des Projekts.

CloudBeta 
Beitragsersteller
 05.11.2022, 15:11
@Destranix

Habe den build ordner jetzt gelöscht aber es kommt beim starten immerncoh die gleiche Fehler meldung

Destranix  05.11.2022, 15:13
@CloudBeta

Beim Starten wovon?

Bau das Projekt erstmal, starten kannst du das danach.

CloudBeta 
Beitragsersteller
 05.11.2022, 15:23
@Destranix

Was heist denn bauen?! Ich dachte das heist starten

CloudBeta 
Beitragsersteller
 05.11.2022, 15:33
@Destranix

Jetzt sagt er mir wieder Permission denied obwohl ich avira wieder ausgemacht habe...

Destranix  05.11.2022, 15:36
@CloudBeta

Dann starte das Programm, mit dem du das machen wolltest, als Administrator und versuch es noch einmal.

Destranix  05.11.2022, 15:46
@CloudBeta

Dein Satz macht im Kontext keinen Sinn.

Du sollst tun, was du vorher tatest, nur eben als Administrator dieses Mal.

CloudBeta 
Beitragsersteller
 05.11.2022, 15:50
@Destranix

Er sagt zwar

cannot open output file Tesst.exe: Permission denied

Aber es gibt keine exe file mehr in dem project...

Nur noch a.exe aber das 4 mal

Destranix  05.11.2022, 15:53
@CloudBeta

Er sagt, dass er die Datei nicht schreiben kann, da ihm die Zugriffsrechte fehlen. Deshalb als Administrator ausführen, dann hat er die Zugriffsrechte.
Wenn es auch als Administrator nicht geht, ist es doof, dann schauen, ob die die Zugriffsrechte an den verzeichnissen anpassen kannst und wenn das auch nicht geht, dann ist evtl. Hardware-Schreibschutz drauf oder so).

CloudBeta 
Beitragsersteller
 05.11.2022, 16:01
@Destranix

Ich verstehe die anleitungen auf google nicht wie ich eine cpp zu einer exe machen kann in mingw :/

Destranix  05.11.2022, 16:02
@CloudBeta

Das macht cmake für dich.

Mach doch einfach dasselbe, was du an deinem anderem Computer auch gemacht hast.

CloudBeta 
Beitragsersteller
 05.11.2022, 16:06
@CloudBeta

Ah ja dann sagt er mir libgcc_s_seh-1.dll wurde nicht gefunden

also wenn ich es im cmd mache

Hä? In CLion habe ich einfach auf den grünen Pfeiul geclickt aber genau das funktioniert ja grade nichtmehr hä?

CloudBeta 
Beitragsersteller
 05.11.2022, 16:08
@Destranix

Aber gcc --version funktioniert ja? Dann ist es doch installiert oder nicht

CloudBeta 
Beitragsersteller
 05.11.2022, 16:16
@Destranix

Ich rufe das ja grade so auf weil ich ja auf einem anderem pc bin

G:\msys64\mingw64\bin\gcc --version

Und bei dem link brauch ich doch ein programm code::Blocks ?

Destranix  05.11.2022, 16:17
@CloudBeta

Soll das heißen, dein MinGW liegt auf der festplatte?

Du musst das auf deinem PC installieren, sonst wird das bauen kompliziert oder funktioniert garnicht.

CloudBeta 
Beitragsersteller
 05.11.2022, 16:19
@Destranix

Òkay dann installier ich das jetzt nochmal

CloudBeta 
Beitragsersteller
 05.11.2022, 16:39
@Destranix

Ich verstehe das nicht... gcc.exe exestiert. ich habe den bin pfad zu den system variablen hinzugefügt aber gcc --version funktioniert nicht :(

Oh ichmusste cmd nur neu öffnen

Destranix  05.11.2022, 16:40
@CloudBeta

Starte die Konsole neu und versuch es noch einmal.

Du verwendest auch sicher die MinGW-Konsole und nicht etwa die CMD?

CloudBeta 
Beitragsersteller
 05.11.2022, 16:42
@Destranix

Em doch? Bei der mingw console hat garnichts gekalppt... aber jetzt geht es im cmd Also so halb XD

G:\Users\alpha\OneDrive\Desktop\Tesst\main.cpp:8:10: fatal error: GLFW/glfw3.h: No such file or directory

  8 | #include <GLFW/glfw3.h>

   |     ^~~~~~~~~~~~~~

compilation terminated.

Destranix  05.11.2022, 16:45
@CloudBeta

Na okay, solange es geht.

Dann, was hast du ausgeführt? cmake?

CloudBeta 
Beitragsersteller
 05.11.2022, 16:47
@Destranix

gcc.exe G:\Users\alpha\OneDrive\Desktop\Tesst\main.cpp

Destranix  05.11.2022, 16:48
@CloudBeta

Na das geht natürlich nicht.

Bau dein Projekt mit cmake:

cmake --build .

im Projektordner.

CloudBeta 
Beitragsersteller
 05.11.2022, 16:50
@Destranix

cannot open output file Tesst.exe: Permission denied 😅

Destranix  05.11.2022, 16:53
@CloudBeta

Öffne die Konsole als Administrator und versuch es noch einmal.
(Für CMD: Suche -> "cmd" -> "Als Administrator ausführen")

CloudBeta 
Beitragsersteller
 05.11.2022, 16:56
@Destranix

Kommt das gleiche :( und ich bin mir sicher ich habe es richtig gemacht weil oben steht Adminestrator: Eingabeaufforderung

Destranix  05.11.2022, 17:08
@CloudBeta

Ja, das dachte ich mir schon.

Ich frage mich ja, wie du überhaupt gcc verwenden kannst, wenn nicht über MinGW. Schu mal ob du irgendwo die MinGW-Konsole öffnen und es darüber versuchen kannst.

Ansonsten versuch mal

cmake -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON --build .

Und schu, ob dir das dann genauere Gründe liefert dafür, dass es den File nicht öffnen kann.
Du kannst auch mal schauen, ob du selbst einen File mit dem Namen über die Konsole erstellen kannst (notepad.exe <filename> und dann speichern).

CloudBeta 
Beitragsersteller
 05.11.2022, 17:16
@Destranix

CMake Error: Unknown argument --build

Und ja dann öffnet sich ein neues Fenster vom editor

und dann steht da speichern?

Destranix  05.11.2022, 17:19
@CloudBeta

Oben "Datei -> Speichern". Soll halt testen, ob du die berechtigung hast oder ob dir das nur Unsinn erzählt.

CMake Error: Unknown argument --build

Dann

cmake --build -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON .

oder

cmake -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON .
CloudBeta 
Beitragsersteller
 05.11.2022, 17:21
@Destranix

Also er sagt nichts wenn ich auf speichern drücke.

Wenn ich die commands eingebe sagt er mir nur unknown argument .

Destranix  05.11.2022, 17:24
@CloudBeta

Wird die Datei erstellt, wnen du auf "Speichgern" drückst?

Das mit dem "unknown argument" ist komisch. Dann schreib einfach mal in deine CMakeList folgendes:

set(CMAKE_VERBOSE_MAKEFILE ON)
set(VERBOSE ON)

und versuch es mit dem Command von vorhin.

CloudBeta 
Beitragsersteller
 05.11.2022, 17:28
@Destranix

Achso ich dachte es geht immnnoch um das txt... Ja wenn ich meinen pfad zu dem project eingebe macht er etwas. Keine Fehlermeldung

Aber keine exe im ordner

Destranix  05.11.2022, 17:29
@CloudBeta

Was genau hast du jetzt wo gemacht und welche AUsgabe hast du erhalten?

.exe taucht evtl. im build-Ordner auf. Oder du musst noch ein

make

eingeben, damit es etwas tut.

CloudBeta 
Beitragsersteller
 05.11.2022, 17:30
@Destranix

Ich habe cmake -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON . benutzt

Und es gibt keinen build ordner

CloudBeta 
Beitragsersteller
 05.11.2022, 17:34
@Destranix

Wenn ich das make hinter cmake mache kommt auch nichts und wenn ich es hinten drann mache sagt er ignored

Destranix  05.11.2022, 17:36
@CloudBeta

Wenn du einfach nur make in dem Ordner ausführst passiert nichts? Keine Ausgabe?

Oder welche Ausgabe erhälst du?

CloudBeta 
Beitragsersteller
 05.11.2022, 17:37
@Destranix

C:\Windows\system32>cmake make -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON G:\Users\alpha\OneDrive\Desktop\Tesst

(Das ist der Befehl)

-- Using Win32 for window creation

-- Configuring done

-- Generating done

-- Build files have been written to: G:/Users/alpha/OneDrive/Desktop/Tesst

Destranix  05.11.2022, 17:39
@CloudBeta
cmake make

Ne, mach

g:
cd G:\Users\alpha\OneDrive\Desktop\Tesst

Dann einfach nur

cmake -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON .

und danach

make
CloudBeta 
Beitragsersteller
 05.11.2022, 17:47
@Destranix

Funktioniert bis zum make dann sagt er gibt es nicht. Also in einem neuem Befehl. Wenn ich es nach dem da mit dem BOOL schreibe sagt er halt ignored

Destranix  05.11.2022, 17:50
@CloudBeta

Dann installier dir erst make.

Ansonsten was meinst du mit "ignored"?
Geht denn

cmake -DCMAKE_VERBOSE_MAKEFILE=ON .

?

CloudBeta 
Beitragsersteller
 05.11.2022, 17:52
@Destranix

ja das geht hier:

G:\Users\alpha\OneDrive\Desktop\Tesst>cmake -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON . make

CMake Warning:

 Ignoring extra path from command line:

  "make"

-- Using Win32 for window creation

-- Configuring done

-- Generating done

-- Build files have been written to: G:/Users/alpha/OneDrive/Desktop/Tesst

Was meinst du mit make installieren? Cmake ist jetzt installiert

Destranix  05.11.2022, 17:55
@CloudBeta
G:\Users\alpha\OneDrive\Desktop\Tesst>cmake -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON . make

Das ist immernoch invalid.

Was meinst du mit make installieren? Cmake ist jetzt installiert

Make ungleich CMake. Musste ich auch erst lernen.

CloudBeta 
Beitragsersteller
 05.11.2022, 17:57
@Destranix

Also suche ich jetzt nach was? Make installieren ? da kommen bestimmt nicht die sachen die ich brauche

Destranix  05.11.2022, 17:59
@CloudBeta

Ja, doch. Make. Wenn wir das so bauen braucht es Make.

Das ganze für MinGW. Dürfte sich vermutlich so einfach installieren lassen wie vorhin CMake und GCC. (Wobei alles eigentlich Standradmäßig bei MinGW dabeisein sollte iirc, keine Ahnung, was du da machst).

Destranix  05.11.2022, 18:09
@CloudBeta

Hast du es dieses Mal korrekt ausgeführt?

Ist Make im PATH?

Hast du die Konsole neu gestartet nachdem du den PATH upgedatet hast?

CloudBeta 
Beitragsersteller
 05.11.2022, 18:16
@Destranix

Was soll ichden zum path hinzufügen da ist kein bin ordner

Oh da ist einer

CloudBeta 
Beitragsersteller
 05.11.2022, 18:19
@Destranix

Jetzt sagt er immernoch

cmake -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON . make

ignore

obwohl ich cmd neu gestartet habe

Destranix  05.11.2022, 18:21
@CloudBeta

Wie ich schon sagte:

cmake -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON .

<ENTER>

make

<ENTER>

CloudBeta 
Beitragsersteller
 05.11.2022, 18:22
@Destranix

Ah tut mir leid trotzdem:

make: *** Keine Targets angegeben und keine »make«-Steuerdatei gefunden. Schluss.

Destranix  05.11.2022, 18:25
@CloudBeta

Hm, okay, blöd, dann lässt sich das so nicht bauen.

Dann versuch es wieder mit nur

cmake --build .

aber mit der geänderten CMakeList mit den Verbose drinnen.

Destranix  05.11.2022, 18:41
@CloudBeta

Ja wie soll es denn dann funktionieren? Ich dachte du baust das Projekt das du gestern auch bauen wolltes?

CloudBeta 
Beitragsersteller
 05.11.2022, 18:42
@Destranix

Ja aber gestern habe ich es ja noch über CLion gemacht und jetzt geht das ja nichtmehr wegen permission denied

Destranix  05.11.2022, 18:45
@CloudBeta

Wenn du in CLion das "Permisson Denied" hattest, dann hätten wir da wieterschauen sollen.
Und CMakeList brauchst du trotzdem.

Hast du CLion schon einmal als Administrator ausgeführt?

CloudBeta 
Beitragsersteller
 05.11.2022, 18:50
@Destranix

Ja guut XD jetzt ist aber noch ein problem... Irgendwie sind jetzt die run configurations gelöscht und wenn ich einen neue erstelle sagt er "nothing to run on" immer wieder neue probleme...

Destranix  05.11.2022, 18:53
@CloudBeta

Dann erstell halt die RunConfigurations neu. Im Zweifelsfalle erstellst du dir ein neues Projekt und kopierst dir die Configurations rüber.

Vielleicht ist das aber auch schlicht etwas, was auf deinem anderen Rechner gespeichert ist und sich nicht über die Festplatte übertragen lies?

CloudBeta 
Beitragsersteller
 05.11.2022, 18:56
@Destranix

Hm das kann sein... Naja dann schreibe ich Sontag abend nochmal wenn ich wieder zuhause bin okay?

CloudBeta 
Beitragsersteller
 06.11.2022, 19:42
@Destranix

So ich bin wieder zuhause ich hoffe du bist noch online :)

Also wenn ich auf start drücke kommten halt so nachrichten die erstmal gut aussehen:

[1/18] Building CXX object CMakeFiles/Tesst.dir/main.cpp.obj

[2/18] Building C object external/glfw/src/CMakeFiles/glfw.dir/win32_thread.c.obj

[3/18] Building C object external/glfw/src/CMakeFiles/glfw.dir/vulkan.c.obj

[4/18] Building C object external/glfw/src/CMakeFiles/glfw.dir/win32_joystick.c.obj

[5/18] Building C object external/glfw/src/CMakeFiles/glfw.dir/win32_init.c.obj

[6/18] Building C object external/glfw/src/CMakeFiles/glfw.dir/monitor.c.obj

[7/18] Building C object external/glfw/src/CMakeFiles/glfw.dir/init.c.obj

[8/18] Building C object external/glfw/src/CMakeFiles/glfw.dir/context.c.obj

[9/18] Building C object external/glfw/src/CMakeFiles/glfw.dir/window.c.obj

[10/18] Building C object external/glfw/src/CMakeFiles/glfw.dir/input.c.obj

[11/18] Building C object external/glfw/src/CMakeFiles/glfw.dir/win32_time.c.obj

[12/18] Building C object external/glfw/src/CMakeFiles/glfw.dir/osmesa_context.c.obj

[13/18] Building C object external/glfw/src/CMakeFiles/glfw.dir/win32_monitor.c.obj

[14/18] Building C object external/glfw/src/CMakeFiles/glfw.dir/wgl_context.c.obj

[15/18] Building C object external/glfw/src/CMakeFiles/glfw.dir/egl_context.c.obj

[16/18] Building C object external/glfw/src/CMakeFiles/glfw.dir/win32_window.c.obj

[17/18] Linking C static library external\glfw\src\libglfw3.lib

[18/18] Linking CXX executable Tesst.exe

Aber dann kommt halt trotzdem

FAILED: Tesst.exe 

cmd.exe /C

C:\Users\alpha\OneDrive\Desktop\Tesst/main.cpp:77: undefined reference to `__imp_glfwInit'

C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/12.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:\Users\alpha\OneDrive\Desktop\Tesst/main.cpp:79: undefined reference to `__imp_glfwTerminate'

collect2.exe: error: ld returned 1 exit status

ninja: build stopped: subcommand failed.

Destranix  06.11.2022, 19:53
@CloudBeta

Dann machen wir da weiter, wo wir aufgehört haben. Mit

set(GLFW_LIBRARY_TYPE SHARED)

Vielleicht funktioniert es, wenn man GLFW dynamisch linkt.

CloudBeta 
Beitragsersteller
 06.11.2022, 20:12
@Destranix

Beim reloaden kommt das

CMake File API: C:\Users\alpha\OneDrive\Desktop\Tesst: failed to load from 'C:\Users\alpha\OneDrive\Desktop\Tesst\.cmake\api\v1\reply\target-glfw-Debug-a04d8ad351b166d44a1b.json'

Aber das kam auch ohne die neue line...

Warte... vielleicht können wir uns auch mal diese file anschauen

da steht "external/glfw/src/libglfw3.lib"

a

Destranix  06.11.2022, 20:16
@CloudBeta

Dann lösch den .cmake-Ordner und den CMake-Cahe in dem Ordner.

Destranix  06.11.2022, 20:18
@CloudBeta
Ah doch nicht die datei gibt es

Printed CMake noch das Commando aus? Weil die letzten Male hat das ja eine .a-Datei verlinkt und nicht .lib

Aber vieleicht haben wir das auch geändert als wir das Suffix hgeändert haben.

CloudBeta 
Beitragsersteller
 06.11.2022, 20:19
@Destranix

Hm... das ist jetzt blöd... Ich kann den ordner nicht löschen weil das Verzeichnis beschädigt ist?

Destranix  06.11.2022, 20:21
@CloudBeta

Beschädigt ist schlecht. Sagt das wirklich beschädigt?

Mach mal alles andere zu, was evtl. den Ordner verwendet und lösch die dann über den Explorer.

CloudBeta 
Beitragsersteller
 06.11.2022, 20:22
@Destranix

Ich versuch es ja über den explorer... habe CLion schon geschlossen und nurnoch spotify und ein spiel offen

Destranix  06.11.2022, 20:24
@CloudBeta

Dann ist es schlecht.

Kopier dir als ersten Schritt alle wichtigen Daten auf einen anderen Datenträger, dann chkdsk auf den Datenträger oder gleich neu formattieren oder einen neuen holen.

CloudBeta 
Beitragsersteller
 06.11.2022, 20:25
@Destranix

Ja... ist eine 5mb/s HDD und da sind 433 GB drauf... Das dauert bestimmt 2 Tage XD

Destranix  06.11.2022, 20:27
@CloudBeta

Also prinzipiell kannst du auch versuchen die zu reparieren ohne die vorher zu klonen, aber kann halt leicht Zeug drauf kaputt gehen.

Stell am besten eine neue Frage dazu.

Destranix  06.11.2022, 20:30
@CloudBeta

Wenn du meinst. Aber wie gesagt, eigene Gefahr. Im Zweifelsfalle erst wichtige Daten sichern.

CloudBeta 
Beitragsersteller
 06.11.2022, 20:56
@Destranix

Hab es jetzt einfach in einen anderen ordner verschoben problem gelöt oder? 😅

Destranix  06.11.2022, 21:01
@CloudBeta

Naja ne. Wenn die Datei beschädigtw ar, dann kann es gut sein, dass die Platte beschädigt ist. Ich würde auf jeden Fall zeitnah zumindest die wichtigsten Dateien backupen.

CloudBeta 
Beitragsersteller
 06.11.2022, 21:02
@Destranix

Ja mal später sehen...

Also jetzt reloadet er und beim starten kommt wieder undefined reference

Destranix  07.11.2022, 09:59
@CloudBeta
Ja mal später sehen...

Das sollte möglichst früh geschehen, denn wenn die Platte hin ist macht jedes arbeiten darauf die Chance höher, dass Daten vcerloren gehen.

Also jetzt reloadet er und beim starten kommt wieder undefined reference

Wie sieht der Command jetzt aus? Er müsste jetzt eine Shared-Lib verwenden statt einer statischen.

CloudBeta 
Beitragsersteller
 07.11.2022, 17:26
@Destranix

Welchen command meinst du?

====================[ Build | Tesst | Debug ]===================================

"C:\Program Files\JetBrains\CLion 2022.2.4\bin\cmake\win\bin\cmake.exe" --build C:\Users\alpha\OneDrive\Desktop\Tesst --target Tesst -j 9

[1/17] Building C object external/glfw/src/CMakeFiles/glfw.dir/init.c.obj

[2/17] Building C object external/glfw/src/CMakeFiles/glfw.dir/window.c.obj

[3/17] Building C object external/glfw/src/CMakeFiles/glfw.dir/win32_joystick.c.obj

[4/17] Building C object external/glfw/src/CMakeFiles/glfw.dir/egl_context.c.obj

[5/17] Building C object external/glfw/src/CMakeFiles/glfw.dir/vulkan.c.obj

[6/17] Building C object external/glfw/src/CMakeFiles/glfw.dir/context.c.obj

[7/17] Building C object external/glfw/src/CMakeFiles/glfw.dir/win32_init.c.obj

[8/17] Building C object external/glfw/src/CMakeFiles/glfw.dir/input.c.obj

[9/17] Building C object external/glfw/src/CMakeFiles/glfw.dir/monitor.c.obj

[10/17] Building C object external/glfw/src/CMakeFiles/glfw.dir/win32_time.c.obj

[11/17] Building C object external/glfw/src/CMakeFiles/glfw.dir/win32_thread.c.obj

[12/17] Building C object external/glfw/src/CMakeFiles/glfw.dir/osmesa_context.c.obj

[13/17] Building C object external/glfw/src/CMakeFiles/glfw.dir/win32_monitor.c.obj

[14/17] Building C object external/glfw/src/CMakeFiles/glfw.dir/wgl_context.c.obj

[15/17] Building C object external/glfw/src/CMakeFiles/glfw.dir/win32_window.c.obj

[16/17] Linking C static library external\glfw\src\libglfw3.lib

[17/17] Linking CXX executable Tesst.exe

FAILED: Tesst.exe 

cmd.exe /C "cd . && C:\msys64\mingw64\bin\c++.exe -g CMakeFiles/Tesst.dir/main.cpp.obj -o Tesst.exe -Wl,--out-implib,libTesst.dll.a -Wl,--major-image-version,0,--minor-image-version,0 external/glfw/src/libglfw3.lib -lkernel32 -luser32 -lgdi32 -lwinspool -lshell32 -lole32 -loleaut32 -luuid -lcomdlg32 -ladvapi32 && cd ."

C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/12.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: CMakeFiles/Tesst.dir/main.cpp.obj: in function `main':

C:\Users\alpha\OneDrive\Desktop\Tesst/main.cpp:77: undefined reference to `__imp_glfwInit'

C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/12.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:\Users\alpha\OneDrive\Desktop\Tesst/main.cpp:79: undefined reference to `__imp_glfwTerminate'

collect2.exe: error: ld returned 1 exit status

ninja: build stopped: subcommand failed.

CloudBeta 
Beitragsersteller
 07.11.2022, 17:35
@Destranix

Hier vielleicht ist ja etwas in der falschen Reihenfolge

cmake_minimum_required(VERSION 3.23)
project(Tesst)

set(SOURCE_FILES main.cpp) # welche Dateien kompiliert werden sollen


set(GLFW_SOURCE_DIR  "external/glfw")
set(GLFW_LIBRARY_TYPE SHARED)

set(BUILD_SHARED_LIBS ON CACHE BOOL "")
set(GLFW_BUILD_EXAMPLES OFF CACHE BOOL "")
set(GLFW_BUILD_TESTS OFF CACHE BOOL "")
set(GLFW_BUILD_DOCS OFF CACHE BOOL "")
set(GLFW_INSTALL OFF CACHE BOOL "")
set(GLFW_DLL ON CACHE BOOL "")

set(CMAKE_STATIC_LIBRARY_SUFFIX ".lib")
set(CMAKE_SHARED_LIBRARY_SUFFIX ".dll")


include_directories(external/glfw/include external/glfw/deps)

add_subdirectory(external/glfw)

include_directories(external/glfw/include external/glfw/deps)

add_executable(Tesst main.cpp)

target_link_libraries(Tesst ${GLFW3_LIBRARY} glfw)
Destranix  07.11.2022, 17:40
@CloudBeta

Okay, sehr komisch. Wir dagen GLFW, dass es als Shared-Lib baueh soll, aber es baut trotzdem statisch.

Kannst du mal in den CMakkeList im GLOFW-Ordner eine Ausgabe einbauen, die dir prüft auf welchen Wert "GLFW_LIBRARY_TYPE" gestezt ist? Nicht dass das aus irgendwelchen Gründen da nicht ankommt.

CloudBeta 
Beitragsersteller
 07.11.2022, 17:50
@Destranix

Er gibt SHARED aus.

Aber

if (BUILD_SHARED_LIBS)
    set(_GLFW_BUILD_DLL 1)
    message("aaaaaaaaaaa")
endif()

Das gibt er nicht aus ist das richtig so?

Destranix  07.11.2022, 18:03
@CloudBeta

Dann mach mal das

 CACHE BOOL ""

weg, vielleicht geht es dann. Ich habe auch keine Ahnung, was der Teil genau tut.

Bzw. lösch die Zeilen

set(BUILD_SHARED_LIBS ON CACHE BOOL "")

und

set(GLFW_DLL ON CACHE BOOL "")

Außerdem lösch auch mal die .cmake-Directories und Caches sowohl im Projektordner als auch in den Unterordnern (insbesondere in den GLFW-Ordnern), vielleicht tut es dnan, was es soll.
ich meine, ich verstehe nicht, wieso das Ding nicht dynamisch baut, obwohl es eben genau das tun sollte.

CloudBeta 
Beitragsersteller
 07.11.2022, 18:07
@Destranix

Hm sollte ich vielleicht einfach mal ein neues project machen? Weil ich versuch ja immer den ordner zu löschen also den CMakeFiles und den .cmake und einen ache fid ich hier nicht

Destranix  07.11.2022, 18:09
@CloudBeta

Wenn es dir keine Umstände macht könnte man das mal versuchen, ja. Dann aber auch das GLFW neu herunterladen bzw. darauf achten, dass du keine der Filkes, die durch CMake erstellt wurden, kopierst.

Bzw. vielleicht reicht es auch schon, den GLFW-Ordner zu löschen und neu zu füllen.

CloudBeta 
Beitragsersteller
 07.11.2022, 18:11
@Destranix

Naja ich das project hat ja schon was durch gemacht vielleicht ist da einfach was schief gelaufe ich mach mir jetzt ein neues ich soll den source code runterladen oder? Also GLFW

Destranix  07.11.2022, 18:12
@CloudBeta
ich soll den source code runterladen oder? Also GLFW

Ja, damit du halt nicht die CMakeFiles rüberkopierst.

CloudBeta 
Beitragsersteller
 07.11.2022, 18:20
@Destranix

So frisch erstellt und GLFW runtergeladen. die h datei ist unter external/glfw-3.3.8/include/GLFW/glfw3.h

Was muss ich jetzt genau in alle sachen schreiben?

Destranix  07.11.2022, 18:23
@CloudBeta

Dann musst du die Pfade in der CMakeList anpassen:

cmake_minimum_required(VERSION 3.23)
project(Tesst)

set(SOURCE_FILES main.cpp) # welche Dateien kompiliert werden sollen


set(GLFW_SOURCE_DIR  "external/glfw-3.3.8")
set(GLFW_LIBRARY_TYPE SHARED)

set(GLFW_BUILD_EXAMPLES OFF)
set(GLFW_BUILD_TESTS OFF)
set(GLFW_BUILD_DOCS OFF)
set(GLFW_INSTALL OFF)

set(CMAKE_STATIC_LIBRARY_SUFFIX ".lib")
set(CMAKE_SHARED_LIBRARY_SUFFIX ".dll")


include_directories(external/glfw/include external/glfw-3.3.8/deps)

add_subdirectory(external/glfw-3.3.8)

include_directories(external/glfw-3.3.8/include external/glfw-3.3.8/deps)

add_executable(Tesst main.cpp)

target_link_libraries(Tesst ${GLFW3_LIBRARY} glfw)

vielleicht muss man

set(GLFW_SOURCE_DIR  "external/glfw-3.3.8")

auch zu

set(GLFW_SOURCE_DIR  "external/glfw-3.3.8/src")

ändern, das würde irgendwie Sinn machen. Aber vielleicht bbraucht amn das auch garnicht.

CloudBeta 
Beitragsersteller
 07.11.2022, 18:27
@Destranix

EM... keine Fehlermeldung :D er sagt helloworld (ich habe dannach glfwInit() geschrieben)

oh... wenn ich den example text nehme von glfw sagt er undefined reference __imp_glClear

Destranix  07.11.2022, 18:30
@CloudBeta

Heißt, jetzt geht es? (Wenn ja dann: Endlich! Hurra!)

Dann schau auch mal, ob es mit

set(GLFW_LIBRARY_TYPE STATIC)

geht, das willst du vielleicht später haben, wenn du das auf einem System bauen aber auf dem anderem ausführen möchtest.
Außerdem wüsste man dann, ob wir jetzt die ganze Zeit unnötiges Zeug gemacht haben oder ob es tatsächlich nötig war, das dynamisch zu bauen.

CloudBeta 
Beitragsersteller
 07.11.2022, 18:32
@Destranix

Er sagt immernoch undefined reference o '__imp_glClear'

Destranix  07.11.2022, 18:37
@CloudBeta

Das ist aber jetzt eine andere Fehlermeldung, also ein Fortschritt.

Du brauchst nicht nur GLFW, sondern auch OpenGL.

find_package(OpenGL REQUIRED)
include_directories(${OPENGL_INCLUDE_DIRS})

und vielleicht reicht das auch schon.

CloudBeta 
Beitragsersteller
 07.11.2022, 18:38
@Destranix

Muss ich noch was runterladen dafür? also das orignial OpenGL ?

Und was muss ich untertarget Link libraries angeben

Destranix  07.11.2022, 18:40
@CloudBeta

OpenGL sollte das Betriebssystem von sich aus bereitstellen.

und für link_libraries gib erst einmal nichts an und schau ob es geht. Wnen nicht schaue ich mal nach, was man da angeben müsste.

Destranix  07.11.2022, 18:41
@CloudBeta

Okay, das wäre dann wohl:

target_link_libraries(Tesst ${GLFW3_LIBRARY} glfw ${OPENGL_LIBRARIES})
CloudBeta 
Beitragsersteller
 07.11.2022, 18:48
@Destranix

Ja geht :D

Aber direct das erste im video geht nicht...

glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_PROFILE);

GLFWwindow* window = glfwCreateWindow(800, 800, "First", nullptr, nullptr);
if (window == nullptr) {
    std::cout << "afaf";
    glfwTerminate();
    return -1;
}

Er return -1 liegt dasirgendwas an der lib vielleicht?

CloudBeta 
Beitragsersteller
 07.11.2022, 18:51
@CloudBeta

Oh sorry ein Fehler von mir

Vielen dank für denke hilfe :D

CloudBeta 
Beitragsersteller
 07.11.2022, 19:08
@CloudBeta

Sorry das ich nochmal störe... ich muss noch glad installieren aber das ist eine ganz andere struktur als es GLFW war! Es gibt nichts mit Cmake

CloudBeta 
Beitragsersteller
 07.11.2022, 19:33
@Destranix

Er will nicht...

add_subdirectory(${GLAD_SOURCES_DIR}/cmake glad_cmake)

CMake Error at CMakeLists.txt:33 (add_subdirectory):

 add_subdirectory given source "C:/Users/alpha/3D

 Objects/backR/external/glad//cmake" which is not an existing directory.

Auch wenn ich bei set(GLAD_SOURCES_DIR das / am ende weglasse

Objects/backR/external/glad/cmake" which is not an existing directory.

Destranix  07.11.2022, 19:35
@CloudBeta

Hast du dir glad denn auch heruntergeladen und an die entsprechende stelle gepackt?
Bzw. musst du dir das in deinen extrenal-Ordner packen und die Pfade entsprechend anpassen.

CloudBeta 
Beitragsersteller
 07.11.2022, 19:37
@Destranix

ja der include ist bei external/glad/include

Aber heist add_subdirectory nicht das er ein neues erstellt? Wie kann es dann ein fehler sein wenn es noch nicht exestiert

Destranix  07.11.2022, 19:40
@CloudBeta

Dein CMake müsste etwa folgendes sein:

set(GLAD_SOURCES_DIR "${PROJECT_SOURCE_DIR}/external/glad/")
add_subdirectory("${GLAD_SOURCES_DIR}/cmake" glad_cmake)
glad_add_library(glad_gl_core_33 REPRODUCIBLE API gl:core=3.3)
target_link_libraries(Tesst glad_gl_core_33 ${GLFW3_LIBRARY} glfw ${OPENGL_LIBRARIES})

Evtl. ist aber auch das "PROJECT_SOURCE_DIR" woanders, evtl. dann versuchen mit

set(GLAD_SOURCES_DIR "/external/glad/")
Destranix  07.11.2022, 19:41
@CloudBeta
Aber heist add_subdirectory nicht das er ein neues erstellt? Wie kann es dann ein fehler sein wenn es noch nicht exestiert

Nein, der fügt das existierende Subdirectory zum Projekt hinzu.

CloudBeta 
Beitragsersteller
 07.11.2022, 19:53
@Destranix

Egal... Also es gibt keinen cmake ordner in glad/src da ist nur eine .c drinn

CloudBeta 
Beitragsersteller
 07.11.2022, 19:57
@Destranix

Ist das ganze das glad? Da sehe ich aber keinen include ordner?

CloudBeta 
Beitragsersteller
 07.11.2022, 20:08
@Destranix

CMake Error at C:/Program Files/JetBrains/CLion 2022.2.4/bin/cmake/win/share/cmake-3.23/Modules/FindPackageHandleStandardArgs.cmake:230 (message):

 Could NOT find PythonInterp (missing: PYTHON_EXECUTABLE)

CloudBeta 
Beitragsersteller
 07.11.2022, 20:11
@Destranix

Nein? Wie gesagt ich bin ganz neu XD habe nur mingw installiert für die grundlagen

CloudBeta 
Beitragsersteller
 07.11.2022, 20:14
@Destranix

also einfach python runterladen? in den default ordner?

CloudBeta 
Beitragsersteller
 07.11.2022, 20:23
@Destranix

So er zeigt mir keine Fehler an aber


#include <glad/glad.h>

exestiert nicht. zwar glad/gl.h aber da gibt es die funktiion gladLoadGL() nicht

Destranix  07.11.2022, 20:45
@CloudBeta

Kann ich dir nicht sagen. Probier es aus und wnen es nicht geht, dann recherchiere, was du stattdessen verwenden musst oder ob es evtl. sogar ohne geht.

CloudBeta 
Beitragsersteller
 07.11.2022, 20:47
@Destranix

Okay einfach mal schauen :) Danke hätte ich wieder nicht ohne dich geschafft... Warum brauche ich denn immer ein extra Version wo es cmake gibt und die anderen nicht?

Destranix  07.11.2022, 20:49
@CloudBeta

Vielleicht haben die anderen nur nicht gezeigt, wie sie das gebaut haben, oder haben eine Umgebung verwendet, wo das schon installiert war oder so? Kann ich dir nicht beantworten die Frage.

CloudBeta 
Beitragsersteller
 07.11.2022, 21:48
@Destranix

Jetzt geht es ohne Grund nichtmehr...

FAILED: gladsources/glad_gl_core_33/include/KHR/khrplatform.h gladsources/glad_gl_core_33/include/glad/gl.h gladsources/glad_gl_core_33/src/gl.c gladsources/glad_gl_core_33/args.txt C:/Users/alpha/3D Objects/backR/cmake-build-debug/gladsources/glad_gl_core_33/include/KHR/khrplatform.h C:/Users/alpha/3D Objects/backR/cmake-build-debug/gladsources/glad_gl_core_33/include/glad/gl.h C:/Users/alpha/3D Objects/backR/cmake-build-debug/gladsources/glad_gl_core_33/src/gl.c C:/Users/alpha/3D Objects/backR/cmake-build-debug/gladsources/glad_gl_core_33/args.txt 

Das System kann den angegebenen Pfad nicht finden.

cmd.exe /C "cd /D "C:\Users\alpha\3D Objects\backR\cmake-build-debug\external\glad" && echo Cleaning "C:/Users/alpha/3D Objects/backR/cmake-build-debug/gladsources/glad_gl_core_33" && "C:\Program Files\JetBrains\CLion 2022.2.4\bin\cmake\win\bin\cmake.exe" -E remove_directory "C:/Users/alpha/3D Objects/backR/cmake-build-debug/gladsources/glad_gl_core_33" && "C:\Program Files\JetBrains\CLion 2022.2.4\bin\cmake\win\bin\cmake.exe" -E make_directory "C:/Users/alpha/3D Objects/backR/cmake-build-debug/gladsources/glad_gl_core_33" && echo Generating with args --out-path "C:/Users/alpha/3D Objects/backR/cmake-build-debug/gladsources/glad_gl_core_33" --api gl:core=3.3 --reproducible c && C:\Users\alpha\AppData\Local\Programs\Python\Python311\python.exe -m glad --out-path "C:/Users/alpha/3D Objects/backR/cmake-build-debug/gladsources/glad_gl_core_33" --api gl:core=3.3 --reproducible c && echo Writing "C:/Users/alpha/3D Objects/backR/cmake-build-debug/gladsources/glad_gl_core_33/args.txt" && echo --out-path "C:/Users/alpha/3D Objects/backR/cmake-build-debug/gladsources/glad_gl_core_33" --api gl:core=3.3 --reproducible c > "C:/Users/alpha/3D Objects/backR/cmake-build-debug/gladsources/glad_gl_core_33/args.txt""

ninja: build stopped: subcommand failed.

Den ersten pfad also

"C:\Users\alpha\3D Objects\backR\cmake-build-debug\external\glad"

gbit es nicht

CloudBeta 
Beitragsersteller
 07.11.2022, 22:02
@CloudBeta

(Passiert auch wenn ich den Ganzen code auskommentiere)

Destranix  08.11.2022, 07:48
@CloudBeta
C:/Users/alpha/3D Objects/backR/cmake-build-debug/gladsources/glad_gl_core_33

Das ist halt wieder ein anderer Pfad, als der, in dem dein glad liegt, oder? Prüf das mal und schau, ob du da etwas umändern musst.

Vielleicht musst du auch erst irgendwie GLAD generieren und dann geht das, keine Ahnung.

Man kann sich auch mal folgendes anschauen:

https://github.com/Dav1dde/glad/blob/glad2/cmake/CMakeLists.txt

oben steht, wir man z.B. den Pfad, an dem das generiert wird, ändern kann, evtl. kannst du damit dem Pfad passend setzen.

Vielleicht musst du auch nur die reihenfolge der Befehle verändern, vielleicht will der die Libraries laden bevor sie erzeugt wurden oder soetas.

CloudBeta 
Beitragsersteller
 08.11.2022, 11:22
@Destranix

Hm das kann vielleicht sein ich habe es neu sortiert aber ich bin mir nicht sicher ob es vor dem Fahler oder nach dem Fehler war

CloudBeta 
Beitragsersteller
 08.11.2022, 12:21
@Destranix

Hier ist mal meine cmake list:

cmake_minimum_required(VERSION 3.23)
project(backR)

add_executable(backR main.cpp)

set(SOURCE_FILES main.cpp) # welche Dateien kompiliert werden sollen

set(GLFW_SOURCE_DIR  "external/glfw-3.3.8/src")
set(GLAD_SOURCES_DIR "external/glad")


set(GLFW_LIBRARY_TYPE STATIC)
set(GLFW_BUILD_EXAMPLES OFF)
set(GLFW_BUILD_TESTS OFF)
set(GLFW_BUILD_DOCS OFF)
set(GLFW_INSTALL OFF)
set(CMAKE_STATIC_LIBRARY_SUFFIX ".lib")
set(CMAKE_SHARED_LIBRARY_SUFFIX ".dll")

find_package(OpenGL REQUIRED)
include_directories(${OPENGL_INCLUDE_DIRS})

add_subdirectory(external/glfw-3.3.8)

include_directories(external/glfw-3.3.8/include external/glfw-3.3.8/deps)

add_subdirectory("${GLAD_SOURCES_DIR}/cmake" glad_cmake)
glad_add_library(glad_gl_core_33 REPRODUCIBLE API gl:core=3.3)


target_link_libraries(backR glad_gl_core_33 ${GLFW3_LIBRARY} glfw ${OPENGL_LIBRARIES})
Destranix  08.11.2022, 12:50
@CloudBeta

Müsste man schauen, wie deine Verzeichnisstruktur jetzt aussieht und was genau du beim Umstrukturieren gemacht hast.

Das "Kann den angegebenen Pfad nicht finden" kann sich leider auf so ziemlich jeden Pfad und jedes Programm beziehen, welches in der Fehlermeldung vorkommt.
Wenn es vorher funktioniert hat, evtl. noch einmal neu aufsetzen?

CloudBeta 
Beitragsersteller
 08.11.2022, 12:53
@Destranix

Hab ich mior auch schon gedacht aber wele ordner muss ich dafür löschen

Destranix  08.11.2022, 12:59
@CloudBeta

Das Build-Directory "cmake-build-debug" und die CMakeCache-Datei. Evtl. noch diverse .cmake oder CMakeFiles-Verzeichnisse.

CloudBeta 
Beitragsersteller
 08.11.2022, 13:18
@Destranix

Gelöscht neu gebaut immernoch selber Fehler :(

Destranix  08.11.2022, 13:41
@CloudBeta

Versuch mal

glad_add_library(glad_gl_core_33 REPRODUCIBLE LOCATION "/glad-build" API gl:core=3.3)

Oder alternativ mit anderem Pfad für Location.
Und den Ordner erstellst du dann im Zweifelsfalle falls er nicht existiert.

Ich vermute da könnte ein Bug in GLAD sein.

Destranix  08.11.2022, 14:01
@CloudBeta

In deinem Projektordner. Da wo halt der Pfad hinzeigt, den du da angibst.

Destranix  08.11.2022, 14:23
@CloudBeta

Was soll richtig sein? Der "build-debug"-Ordner ist kein ordner, in dem du irgendetwa smachen solltest, das sollte der Ordner sein, den CMake erstellt.

CloudBeta 
Beitragsersteller
 08.11.2022, 14:26
@Destranix

Ja aber kann ja sein das ein Phad komisch ist der das falsch aufbaut?

Muss die library nicht wie glfw ion external sein? weil es ist ja auch der ordner wo die src drin ist

Destranix  08.11.2022, 14:31
@CloudBeta

Ne, offenbar nicht. das baut die Library in gladsources.

Aber ich sehe auch gerade, der Lösungsvorschlag, den ich angegeben habe, funktioniert eher nicht.
Das Problem scheint wohl zu sein, dass die CakeList von GLAD die Variable "GLAD_SOURCES_DIR" überschreibt.
Vielleicht kannst du es lösen, indem du die nicht setzt oder indem du die Zeile in derden CMAkeList, die das tut, auskommentierst.

CloudBeta 
Beitragsersteller
 08.11.2022, 14:35
@Destranix

Wenn ich e snicht setzte kommt halt

CMake Error at CMakeLists.txt:28 (add_subdirectory):

 add_subdirectory given source "./..//cmake" which is not an existing

 directory. Gibt es dann anscheinend nicht

Destranix  08.11.2022, 14:36
@CloudBeta

Na du musst dann natürlich unten das directory ausschreiben:

add_subdirectory("external/glad/cmake" glad_cmake)
CloudBeta 
Beitragsersteller
 08.11.2022, 14:39
@Destranix

Okay okay neuer Fehler :D

C:\Users\alpha\AppData\Local\Programs\Python\Python311\python.exe: No module named glad

Beim ausführen von der cpp datei

Destranix  08.11.2022, 14:41
@CloudBeta

Mach mal noch einmal rückgängig, was du gerade eben gemacht hast und nutze folgende Zeile

add_subdirectory("external/glad/cmake")

und schau, ob das geht. Offenbar ist der fehler im Endeffekt, dass das Ding "glad_cmake" erstellt und da die CMakeFile reinkopiert, dadurch aber der relative Pfad zu glad nicht mehr stimmt.

Destranix  08.11.2022, 14:51
@CloudBeta

Quickfix vielleicht

pip install glad

oder soetwas? Ich weiß aber nicht, ob das so soll.

Destranix  08.11.2022, 14:54
@CloudBeta

Hast du

set(GLAD_SOURCES_DIR  "external/glfw-3.3.8/src")

gerade gesetzt?

CloudBeta 
Beitragsersteller
 08.11.2022, 14:55
@Destranix

nein

cmake_minimum_required(VERSION 3.23)
project(backR)


set(SOURCE_FILES main.cpp) # welche Dateien kompiliert werden sollen

add_executable(backR main.cpp)


set(GLFW_SOURCE_DIR  "external/glfw-3.3.8/src")
#set(GLAD_SOURCES_DIR "external/glad")


set(GLFW_LIBRARY_TYPE STATIC)
set(GLFW_BUILD_EXAMPLES OFF)
set(GLFW_BUILD_TESTS OFF)
set(GLFW_BUILD_DOCS OFF)
set(GLFW_INSTALL OFF)
set(CMAKE_STATIC_LIBRARY_SUFFIX ".lib")
set(CMAKE_SHARED_LIBRARY_SUFFIX ".dll")

find_package(OpenGL REQUIRED)
include_directories(${OPENGL_INCLUDE_DIRS})

add_subdirectory(external/glfw-3.3.8)

include_directories(external/glfw-3.3.8/include external/glfw-3.3.8/deps)

add_subdirectory("external/glad/cmake")
glad_add_library(glad_gl_core_33 REPRODUCIBLE LOCATION "/glad-build" API gl:core=3.3)


target_link_libraries(backR glad_gl_core_33 ${GLFW3_LIBRARY} glfw ${OPENGL_LIBRARIES})
Destranix  08.11.2022, 14:56
@CloudBeta

Mach mal

set(GLAD_SOURCES_DIR "external/glad")

und

add_subdirectory("$(GLAD_SOURCES_DIR}/cmake")
CloudBeta 
Beitragsersteller
 08.11.2022, 15:04
@Destranix

Hm... nein Hier die ganze fehlermeldung

C:\Users\alpha\AppData\Local\Programs\Python\Python311\python.exe: No module named glad

FAILED: /glad-build/include/KHR/khrplatform.h /glad-build/include/glad/gl.h /glad-build/src/gl.c /glad-build/args.txt 

cmd.exe /C "cd /D "C:\Users\alpha\3D Objects\backR\cmake-build-debug\external\glad" && echo Cleaning /glad-build && "C:\Program Files\JetBrains\CLion 2022.2.4\bin\cmake\win\bin\cmake.exe" -E remove_directory /glad-build && "C:\Program Files\JetBrains\CLion 2022.2.4\bin\cmake\win\bin\cmake.exe" -E make_directory /glad-build && echo Generating with args --out-path /glad-build --api gl:core=3.3 --reproducible c && C:\Users\alpha\AppData\Local\Programs\Python\Python311\python.exe -m glad --out-path /glad-build --api gl:core=3.3 --reproducible c && echo Writing /glad-build/args.txt && echo --out-path /glad-build --api gl:core=3.3 --reproducible c > /glad-build/args.txt"

Dieser Ordner huier exestiert:

"C:\Users\alpha\3D Objects\backR\cmake-build-debug\external\glad"

also backR/cmake-build-debug/external/glad gibt es

Destranix  08.11.2022, 15:07
@CloudBeta

Mach mal die Location noch einmal weg und schau ob das etwas bringt.

Ein Problem scheint gelöst, aber jetzt gibt es ein anderes. Das Python findet den Pfad zum Module nicht.

CloudBeta 
Beitragsersteller
 08.11.2022, 15:12
@Destranix
#set(GLAD_SOURCES_DIR "external/glad")

auskommentiert und

add_subdirectory("external/glad/cmake")

kommt das selbe bei raus

Also das ändert doch eig nichts oder?

Destranix  08.11.2022, 15:15
@CloudBeta

Nicht auskommmentieren. Ich meine

glad_add_library(glad_gl_core_33 REPRODUCIBLE API gl:core=3.3)

Versuch erst das und wenn es nicht geht dann

set(PYTHONPATH "${GLAD_SOURCES_DIR}")
Destranix  08.11.2022, 15:17
@Destranix

Bzw. vielleicht muss es eher

set(ENV{PYTHONPATH} "${GLAD_SOURCES_DIR}")

sein.

CloudBeta 
Beitragsersteller
 08.11.2022, 15:21
@Destranix

Nope... da war aber gesnter irgendwie so ein __init__.py in externl das ist weg aber auch schon länger wra das vielleicht wichtifg?

Destranix  08.11.2022, 15:22
@CloudBeta

Ja, das kann eben hierfür der Grund sein. Wo war das drinnen? Und wieso ist das jetzt weg?

CloudBeta 
Beitragsersteller
 08.11.2022, 15:27
@Destranix

Habs gelöscht weil es sich ja auch automatisch erstellt hat dachte ich es erstellt sich wieedr neu 😅

Destranix  08.11.2022, 15:28
@CloudBeta

Naja, davon wäre auch auszugehen gewesen. Aber offenbar erstellt es die nicht neur.

Also würde ich sagen, wieder neu aufsetzen das Projekt. Oder aber du schaust, ob du die automatisch erstellen Dateien (auch in Unterordnern) so gelöscht bekommst, dass es die Datei die es braucht wieder erstellt.

CloudBeta 
Beitragsersteller
 08.11.2022, 15:34
@Destranix

Alsoo neu alles runterladen und neues Project erstellen?

Destranix  08.11.2022, 15:35
@CloudBeta

Ja so inetwa. Wobei ich erst rumprobieren würde ob ich irgendwie die richtige Datei löschen kann, damit es das Python automatisch neu baut.

CloudBeta 
Beitragsersteller
 08.11.2022, 15:38
@CloudBeta

Ah ich konte es wiederherstellen aber die datei ist leer also die __init__.py

Destranix  08.11.2022, 15:40
@CloudBeta

Wie konntest du das wiederherstellen? Hat das das System selbst gebaut? Wenn nicht, dann bringt dir das evtl. eher weniger nehme ich an.

Ich weiß leider auch nicht, woher diese Datei kommen könnte.

Destranix  08.11.2022, 15:44
@CloudBeta

Hm, ja. Dann ist's fraglich, ob es etwas bringt.

Manchmal ist das aber auch echt ein Gefrickle mit den Kack Libraries. ich meine, warum kann das denn nicht einfach auf Anhieb funktionieren? Mir scheint, die Entwickler denken nicht mit, obwohl die genau dasselbe Problem haben und sich genauso darüber aufregen.

Destranix  08.11.2022, 15:53
@CloudBeta

Nichts. Denn unser Problem liegt leider an einer anderen Stelle 8was vielleicht auch ein Bug ist, aber das müsste man sehen).

CloudBeta 
Beitragsersteller
 08.11.2022, 15:56
@Destranix

Hm okay... vielleicht hilft dch neues project nochmal bauen?

CloudBeta 
Beitragsersteller
 08.11.2022, 15:59
@Destranix

muss ich glfw und glad neu runterladen? Oder kann ich den external ordner einfach rüberziehen

Destranix  08.11.2022, 16:00
@CloudBeta

Wenn da con CMake Dateien drinnen gebaut wurden kann das Zeug kaputt machen. ich würde das neu runterladen um sicherzugehen
(bzw. ich würde eher die Ordner löschen, das klappt normalerweise bei mir).

Destranix  08.11.2022, 16:03
@CloudBeta

Das bringt dir ja recht wenig, dann müsstest du die Libs ja dennoch neu runterladen.

Destranix  08.11.2022, 16:06
@CloudBeta

Die die CMake automatisch erstellt. Aber das verhält sich teilweise auch anders auf anderen Systemen.
CMakeFiles-Ordner und CMakeCache.txt ist das bei mir, im Parent-Ordner und in den Unterordnern.

CloudBeta 
Beitragsersteller
 08.11.2022, 16:21
@Destranix

Soll ich die cmake list so rüber copieren?

CloudBeta 
Beitragsersteller
 08.11.2022, 16:38
@Destranix

Hm... kommt das gleiche habe jetzt alles neu gemacht

Kannst du mir vielleicht die Liste complett nochmal erstellen das da keine mini fehler drinn sind die man übersieht?

Destranix  08.11.2022, 16:39
@CloudBeta

Okay, das ist blöd.

Dann noch einmal zu

set(ENV{PYTHONPATH} "${GLAD_SOURCES_DIR}")

mach mal:

set(ENV{PYTHONPATH} ENV{PYTHONPATH}":${GLAD_SOURCES_DIR}/glad")
CloudBeta 
Beitragsersteller
 08.11.2022, 16:43
@Destranix

Das selbe :(

vielleicht ist doch ein Fehler mit der github version von glad?

Destranix  08.11.2022, 16:44
@CloudBeta

Dann nur

set(ENV{PYTHONPATH} ENV{PYTHONPATH}":${GLAD_SOURCES_DIR}")

das sollte eigentlich gehen.

Ansonsten setz dir mal deinen PYTHONPATH über die Konxole manuell und schau, ob es dann geht.

CloudBeta 
Beitragsersteller
 08.11.2022, 16:51
@Destranix

zu glad in external oder zu glad in cmake-build-debug/external ?

CloudBeta 
Beitragsersteller
 08.11.2022, 16:54
@Destranix
set(PYTHONPATH "external/glad")

Klappt nicht

Destranix  08.11.2022, 16:55
@CloudBeta

Ne, du sollst in der Konsole das ausfüheren und den kompletten abvsoluten Pfad nehmen:

set PYTHONPATH="<pfad zu glad>"

und dann schauen, ob es geht.

CloudBeta 
Beitragsersteller
 08.11.2022, 16:56
@Destranix

Aber ich baue ja über CLion und da kann ich nichts in die console schreiben?

Destranix  08.11.2022, 16:57
@CloudBeta

Hm, okay, dnan geht das nicht. blöd.

Dann versuch mal folgendes:

https://github.com/microsoft/vcpkg/pull/7051

Dein Python-Folder dürfte folgender sein:

C:\Users\alpha\AppData\Local\Programs\Python\Python311

Anstatt die zu löschen benennst du die nur um (häng ein ".old" hinten dran).

CloudBeta 
Beitragsersteller
 08.11.2022, 17:05
@Destranix

Hm in Python311 gibt es keine python37

Auch nicht in unter ordnern

Destranix  08.11.2022, 17:07
@CloudBeta

Dann heißt die vermutlich python311?

Aber mal eine andere Sache:

Kannst du mal in der CMakeList in glad ausgeben, welchen Wert die Variable "CMAKE_CURRENT_LIST_DIR" hat?

Mir scheint nämlich aus irgendwelchen Gründen kopiert CMake die CMakeList in das build-Dir, aber die anderen Dateienn nicht und dann gehte s schief.

Kannst du mir auch einmal einen vollständigen Baum des Build-Directories geben?

CloudBeta 
Beitragsersteller
 08.11.2022, 17:12
@Destranix

C:/Users/alpha/3D Objects/backroomsC/external/glad/cmake

ich glaube das ist die ausgabe (hab es ganz am ende der list geschrieben)

Darunter kam dann noch

-- Glad Library 'glad_gl_core_33'

-- Configuring done

-- Generating done

-- Build files have been written to: C:/Users/alpha/3D Objects/backroomsC/cmake-build-debug

Destranix  08.11.2022, 17:14
@CloudBeta

Bitte mach eine Ausgabe in der CMakeList. Denn das wechselt in ein anderes Directory als es sollte (das wechselt in BINARY_DIR/external/glad statt in SOURCE_DIR/external/glad).

CloudBeta 
Beitragsersteller
 08.11.2022, 17:15
@Destranix

Wie? ich habe in external/glad/cmake/cmakeLists.txt am ende das reingeschrieben

Destranix  08.11.2022, 17:18
@CloudBeta

Ah okay, habe mich da etwas verlesen.

Dann bräuchte ich noch einmal den Fehler den dir cmake ausgibt.

CloudBeta 
Beitragsersteller
 08.11.2022, 17:18
@Destranix

Welchen Fehler? Wenn ich das programm starte kommt der nicht gefunden Fehler von python

Destranix  08.11.2022, 17:19
@CloudBeta

Die Fehlermeldung wie vorhin halt auch. Mit dem Command, das fehlgeschlagen ist.

CloudBeta 
Beitragsersteller
 08.11.2022, 17:21
@Destranix

Ja der kommt beim Starten vom programm und nicht beim CMAKE ausführen?

Aber hier ist er falls du den meintest

C:\Users\alpha\AppData\Local\Programs\Python\Python311\python.exe: No module named glad

FAILED: /glad-build/include/KHR/khrplatform.h /glad-build/include/glad/gl.h /glad-build/src/gl.c /glad-build/args.txt 

cmd.exe /C "cd /D "C:\Users\alpha\3D Objects\backroomsC\cmake-build-debug\external\glad" && echo Cleaning /glad-build && "C:\Program Files\JetBrains\CLion 2022.2.4\bin\cmake\win\bin\cmake.exe" -E remove_directory /glad-build && "C:\Program Files\JetBrains\CLion 2022.2.4\bin\cmake\win\bin\cmake.exe" -E make_directory /glad-build && echo Generating with args --out-path /glad-build --api gl:core=3.3 --reproducible c && C:\Users\alpha\AppData\Local\Programs\Python\Python311\python.exe -m glad --out-path /glad-build --api gl:core=3.3 --reproducible c && echo Writing /glad-build/args.txt && echo --out-path /glad-build --api gl:core=3.3 --reproducible c > /glad-build/args.txt"

Destranix  08.11.2022, 17:24
@CloudBeta
der kommt beim Starten vom programm und nicht beim CMAKE ausführen?

Sieht aber aus wie eine fehlermeldung beim bauen und das bauen geschieht durch CMake.

Hm, blöd, hier ist der Pfad

C:\Users\alpha\3D Objects\backroomsC\cmake-build-debug\external\glad

statt

C:/Users/alpha/3D Objects/backroomsC/external/glad/cmake

Okay, mach mal die Ausgabe des Pfades in der CMakeList direkt vor

add_custom_command
CloudBeta 
Beitragsersteller
 08.11.2022, 17:24
@CloudBeta

Hier noch das davor falls du das auch brauchst

[0/21] glad_gl_core_33-generate

Cleaning /glad-build 

Generating with args --out-path /glad-build --api gl:core=3.3 --reproducible c 

Destranix  08.11.2022, 17:27
@CloudBeta

Ah wobei, ich verstehe jetzt, wieso das so ist.

Ich bräuchte einmal den Baum des Build-Directories, insbesondere von external/glad, ich möchte sehen, ob das irgendwelche Dateien rüberkopiert.

CloudBeta 
Beitragsersteller
 08.11.2022, 17:29
@Destranix

C:/Users/alpha/3D Objects/backroomsC kommt dann einfach nur

Destranix  08.11.2022, 17:31
@CloudBeta

Hm, okay, nicht was ich erwartet hatte, aber irrelevant, wenn das so funktioniert, wie ich denke.

Denn das Problem ist offenbar: Der macht das CD in das build dir, das Python liegt aber im src dir.
Kannst du mir mal zeigen, welche Dateien alle im build-dir liegen, insbesondere unter build/external/glad?

Destranix  08.11.2022, 17:34
@CloudBeta

Okay, wie ich mir das dachte. Sieht nach einem Bug aus. Ich erstelle einen weiteren Issue im Github.

Über einen Workaround kann man dann nachdenken.

Destranix  08.11.2022, 17:44
@CloudBeta

Ich habe den Issue erstellt, du musst das nicht tun.

Was du tun musst: versuch mal folgenden Hotfix:

In der CMakeList von glad folgendes ändern:

add_custom_command(
        OUTPUT ${GLAD_FILES} ${GLAD_ARGS_PATH}
        COMMAND echo Cleaning ${GLAD_DIR}
        COMMAND ${CMAKE_COMMAND} -E remove_directory ${GLAD_DIR}
        COMMAND ${CMAKE_COMMAND} -E make_directory   ${GLAD_DIR}
        COMMAND echo Generating with args ${GLAD_ARGS}
        COMMAND ${PYTHON_EXECUTABLE} -m glad ${GLAD_ARGS}
        COMMAND echo Writing ${GLAD_ARGS_PATH}
        COMMAND echo ${GLAD_ARGS} > ${GLAD_ARGS_PATH}
        WORKING_DIRECTORY ${GLAD_SOURCES_DIR}
        COMMENT "${TARGET}-generate"
        USES_TERMINAL
        )

zu

add_custom_command(
        OUTPUT ${GLAD_FILES} ${GLAD_ARGS_PATH}
        COMMAND echo Copying ${GLAD_SOURCES_DIR}/glad
        COMMAND ${CMAKE_COMMAND} -E copy
                ${GLAD_SOURCES_DIR}/glad
                ${CMAKE_CURRENT_BINARY_DIR}/external/glad
        COMMAND echo Cleaning ${GLAD_DIR}
        COMMAND ${CMAKE_COMMAND} -E remove_directory ${GLAD_DIR}
        COMMAND ${CMAKE_COMMAND} -E make_directory   ${GLAD_DIR}
        COMMAND echo Generating with args ${GLAD_ARGS}
        COMMAND ${PYTHON_EXECUTABLE} -m glad ${GLAD_ARGS}
        COMMAND echo Writing ${GLAD_ARGS_PATH}
        COMMAND echo ${GLAD_ARGS} > ${GLAD_ARGS_PATH}
        WORKING_DIRECTORY ${GLAD_SOURCES_DIR}
        COMMENT "${TARGET}-generate"
        USES_TERMINAL
        )

Ich hoffe das funktioniert (wenn nicht muss man evtl. noch etwas rumspielen.)

Den Bug habe ich dir bereits erklärt.

Destranix  08.11.2022, 17:50
@Destranix

Bzw.:

file(RELATIVE_PATH GLAD_REL_DIR ${CMAKE_SOURCE_DIR} ${GLAD_SOURCES_DIR}) 
add_custom_command(
        OUTPUT ${GLAD_FILES} ${GLAD_ARGS_PATH}
        COMMAND echo Copying ${GLAD_SOURCES_DIR}/glad
        COMMAND ${CMAKE_COMMAND} -E copy
                ${GLAD_SOURCES_DIR}/glad
                ${CMAKE_CURRENT_BINARY_DIR}/${GLAD_REL_DIR}/glad
        COMMAND echo Cleaning ${GLAD_DIR}
        COMMAND ${CMAKE_COMMAND} -E remove_directory ${GLAD_DIR}
        COMMAND ${CMAKE_COMMAND} -E make_directory   ${GLAD_DIR}
        COMMAND echo Generating with args ${GLAD_ARGS}
        COMMAND ${PYTHON_EXECUTABLE} -m glad ${GLAD_ARGS}
        COMMAND echo Writing ${GLAD_ARGS_PATH}
        COMMAND echo ${GLAD_ARGS} > ${GLAD_ARGS_PATH}
        WORKING_DIRECTORY ${GLAD_SOURCES_DIR}
        COMMENT "${TARGET}-generate"
        USES_TERMINAL
        )
CloudBeta 
Beitragsersteller
 08.11.2022, 17:51
@Destranix

Andere Fehler!

[0/21] glad_gl_core_33-generate

Copying external/glad/glad 

Error copying file "external/glad/glad" to "C:/Users/alpha/3D Objects/backroomsC/cmake-build-debug/external/glad".

Destranix  08.11.2022, 17:52
@CloudBeta

Ach okay, dann ändere das zu:

add_custom_command(
        OUTPUT ${GLAD_FILES} ${GLAD_ARGS_PATH}
        COMMAND echo Copying ${GLAD_SOURCES_DIR}/glad
        COMMAND ${CMAKE_COMMAND} -E copy
                ${CMAKE_SOURCE_DIR}/${GLAD_SOURCES_DIR}/glad
                ${CMAKE_CURRENT_BINARY_DIR}/${GLAD_SOURCES_DIR}/glad
        COMMAND echo Cleaning ${GLAD_DIR}
        COMMAND ${CMAKE_COMMAND} -E remove_directory ${GLAD_DIR}
        COMMAND ${CMAKE_COMMAND} -E make_directory   ${GLAD_DIR}
        COMMAND echo Generating with args ${GLAD_ARGS}
        COMMAND ${PYTHON_EXECUTABLE} -m glad ${GLAD_ARGS}
        COMMAND echo Writing ${GLAD_ARGS_PATH}
        COMMAND echo ${GLAD_ARGS} > ${GLAD_ARGS_PATH}
        WORKING_DIRECTORY ${GLAD_SOURCES_DIR}
        COMMENT "${TARGET}-generate"
        USES_TERMINAL
        )
CloudBeta 
Beitragsersteller
 08.11.2022, 17:54
@Destranix

[0/21] glad_gl_core_33-generate

Copying external/glad/glad 

Cleaning /glad-build 

Generating with args --out-path /glad-build --api gl:core=3.3 --reproducible c 

C:\Users\alpha\AppData\Local\Programs\Python\Python311\python.exe: No module named glad.__main__; 'glad' is a package and cannot be directly executed

:/

CloudBeta 
Beitragsersteller
 08.11.2022, 18:07
@Destranix

Uf... ganz viel rot XD

Traceback (most recent call last):

 File "<frozen runpy>", line 198, in _run_module_as_main

 File "<frozen runpy>", line 88, in _run_code

 File "C:\Users\alpha\3D Objects\backroomsC\cmake-build-debug\external\glad\glad\__main__.py", line 17, in <module>

  from glad.generator import GenerationInfo

 File "C:\Users\alpha\3D Objects\backroomsC\cmake-build-debug\external\glad\glad\generator\__init__.py", line 7, in <module>

  from jinja2 import Environment, ChoiceLoader, PackageLoader

ModuleNotFoundError: No module named 'jinja2'

Destranix  08.11.2022, 18:09
@CloudBeta

Das geht einfach.

Command-Prompt aufmachen, dann

pip install Jinja2

Dann gegebenenfalls die IDE neustarten.

CloudBeta 
Beitragsersteller
 08.11.2022, 18:22
@Destranix

Oh man eine Rieseige Fehöermeldung... Also besser gesagt ganz viele kleine sowas hier zb:

/glad-build/src/gl.c:4920:54: error: expected ';' before 'load'

 4920 |   glad_glBinormal3ivEXT = (PFNGLBINORMAL3IVEXTPROC) load(userptr, "glBinormal3ivEXT");

   |                           ^~~~~

   |                           ;

/glad-build/src/gl.c:4921:29: error: 'PFNGLBINORMAL3SEXTPROC' undeclared (first use in this function); did you mean 'PFNGLNORMAL3SVPROC'?

 4921 |   glad_glBinormal3sEXT = (PFNGLBINORMAL3SEXTPROC) load(userptr, "glBinormal3sEXT");

   |               ^~~~~~~~~~~~~~~~~~~~~~

   |               PFNGLNORMAL3SVPROC

Sind alle ca. so aufgebaut

Destranix  08.11.2022, 18:37
@CloudBeta

Hm, okay, die brauchen die OpenGL-Header.

"glext.h" fehlt anscheinend.

Muss man offenbar selbst extra installieren:

https://stackoverflow.com/questions/3933027/how-to-get-the-gl-library-headers

https://github.com/KhronosGroup/OpenGL-Registry

Schau am besten, wo dein GL-Directioy ist.

Bzw. besser vielleicht, direkt glut zu installieren:

https://www.opengl.org/resources/libraries/glut/glut_downloads.php

Evtl. ist das auch schon installiert, dann reicht:

find_package(GLUT REQUIRED)
include_directories(${OPENGL_INCLUDE_DIRS}  ${GLUT_INCLUDE_DIRS})

und

target_link_libraries(backR glad_gl_core_33 ${GLFW3_LIBRARY} glfw ${OPENGL_LIBRARIES} ${GLUT_LIBRARY})
CloudBeta 
Beitragsersteller
 08.11.2022, 18:46
@Destranix

Kannst du mir vielleicht direkt den link zum download von glut geben? Finde die seite sehr unübersichtlich

CloudBeta 
Beitragsersteller
 08.11.2022, 19:03
@Destranix

Ich verstehe nicht wo ich die lib und die dll hinlegen muss

CloudBeta 
Beitragsersteller
 08.11.2022, 19:11
@Destranix

Schon beim cmake reload

CMake Error at C:/Program Files/JetBrains/CLion 2022.2.4/bin/cmake/win/share/cmake-3.23/Modules/FindPackageHandleStandardArgs.cmake:230 (message):

 Could NOT find GLUT (missing: GLUT_glut_LIBRARY)

CloudBeta 
Beitragsersteller
 08.11.2022, 19:15
@Destranix

Der Fehler kommt aus einer anderen cmake file!

CMake Error at C:/Program Files/JetBrains/CLion 2022.2.4/bin/cmake/win/share/cmake-3.23/Modules/FindPackageHandleStandardArgs.cmake:230 (message):

 Could NOT find GLUT (missing: GLUT_glut_LIBRARY)

Da steht nähmlich:

if (${_NAME}_FIND_REQUIRED)
  message(FATAL_ERROR "${__msg}")
Destranix  08.11.2022, 19:16
@CloudBeta

Das ist schon klar, aber wir indcluden ja GLUT in unserer CMakeList obwohl wir das gar nicht verwenden, also lassen wir das einfach.

CloudBeta 
Beitragsersteller
 08.11.2022, 19:20
@Destranix

Ja ich habs ja raus gemacht ist halt immernoch der gleiche Fehler

Oh eine Zeile war noch

CloudBeta 
Beitragsersteller
 08.11.2022, 19:28
@Destranix

Hä habe ich die header nicht schon?

Da ist der gl.h glaux.g glcodearb.h glext.h glu.h glut.h glxext.h gwl.h wglext.h drinn

Destranix  08.11.2022, 19:30
@CloudBeta

Die sind da schon drinnen? Okay, dann ist es komisch, dass der Fehler auftritt.

Dann printe dir mal

${OPENGL_INCLUDE_DIRS}

aus und schau, ob das dasselbe Verzeichnis ist. Wenn nicht, dann kopierst du die Files in das Verzeichnis, das ausgegeben wurde.

CloudBeta 
Beitragsersteller
 08.11.2022, 19:36
@Destranix

Hä?!

CMake Error at CMakeLists.txt:31 (message):

 message called with incorrect number of arguments

einfach mit

message("${OPENGL_INCLUDE_DIRS}")
Destranix  08.11.2022, 19:38
@CloudBeta

Setz noch einen Mode davor:

message(WARNING "${OPENGL_INCLUDE_DIRS}")
CloudBeta 
Beitragsersteller
 08.11.2022, 19:40
@Destranix

Hmm

CMake Warning at CMakeLists.txt:31 (message): (das wars)

Destranix  08.11.2022, 19:43
@CloudBeta

Hm, okay, das ist blöd...und erklärt den fehler.

Die Variable ist offenbar leer.

Dann mach mal aus

include_directories(${OPENGL_INCLUDE_DIRS})

folgendes:

include_directories(${OPENGL_INCLUDE_DIR})

und für's debugging printest du das auch noch einmal aus damit wir sehen, ob es jetzt geht.

Hm ja, das sollte gehen:

https://cmake.org/cmake/help/latest/module/FindOpenGL.html

CloudBeta 
Beitragsersteller
 08.11.2022, 19:45
@Destranix
Ist auch leermessage(WARNING "${OPENGL_INCLUDE_DIR}")

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

Destranix  08.11.2022, 19:52
@CloudBeta

Pack das hier mal unter das find OPENGL:

if(NOT OPENGL_FOUND)
    message(ERROR "OPENGL not found!")
endif(NOT OPENGL_FOUND)

Das printed einen Fehler, wenn das Include-Dir nicht existiert. Offenbar ist das unter MinGW so. Lösung müsste man noch finden, aber nicht jetzt/heute, dafür ist es mir jetzt zu spät.

Destranix  08.11.2022, 19:57
@CloudBeta

Achso, dann pack das hier noch darunter:

if(OPENGL_INCLUDE_DIR STREQUAL "")
    message(ERROR "OPENGL_INCLUDE_DIR is empty!")
endif(OPENGL_INCLUDE_DIR STREQUAL "")
Destranix  08.11.2022, 20:04
@CloudBeta

Komisch. Aber können wir uns morgen drum kümmern. Oder du schaust, selbst woran das liegt.

CloudBeta 
Beitragsersteller
 08.11.2022, 20:06
@Destranix

Ich versuch es ja aber ich habe keine ahnung davon

Destranix  08.11.2022, 20:09
@CloudBeta

Googel ist dein Freund. Und der "message"-Befehl, der dir dagt, was in der Variable steht (wenn die nicht leer ist, dann vielleicht mit Whitespaces gefüllt?).

Destranix  08.11.2022, 20:30
@CloudBeta

Du kannst auch mal GL/gl.h in deinem eigenem programm includen und das Bauen von GLAD deaktivieren und schauen, ob der die Header findet. Dann wüsste man, ob die Header generell nicht verfügbar sind oder nur beim Bauen von GLAD nicht.

CloudBeta 
Beitragsersteller
 08.11.2022, 20:44
@Destranix

Ich habe grade nur ein hello world programm in der datei stehen also garnichts includet

Destranix  09.11.2022, 08:50
@CloudBeta

Und dann einmal GLAD aus der CMAkeList rausnehmen und schauen, opb es dir da auch einen Fehler wirft.

Wenn nicht, dann hat nur GLAD ein Problem mit dem includen.

Sobald das getan ist: Zu dem Bug den ich gestern gemeldet habe gab es eine Antwort. Offenbar ist das Problem das wird das Source-Directory relativ angegeben haben, das können wir dann später einmal fixen.

Destranix  09.11.2022, 17:20
@CloudBeta

Okay, das ist mal etwas.

Dann bau GLAD wieder ein und mach da auch die Änderungen din der CMakeList rückgängig (lad dir die notfalls neu runter).

Dann änderst du in unserer CMake List folgende Zeile

set(GLAD_SOURCES_DIR "external/glad")

zu

set(GLAD_SOURCES_DIR "${CMAKE_SOURCE_DIR}external/glad")

Das sollte den Fehler, für den wir ein Workaround gebaut hatten, beheben, vielleicht behebt es auch noch die anderen Fehler.

CloudBeta 
Beitragsersteller
 09.11.2022, 17:30
@Destranix

mhm

CMake Error at CMakeLists.txt:34 (add_subdirectory):

 add_subdirectory given source "C:/Users/alpha/3D

 Objects/backroomsCexternal/glad/cmake" which is not an existing directory.

meinst du vielleicht ein / vor external?

CloudBeta 
Beitragsersteller
 09.11.2022, 17:32
@CloudBeta

So baut es ich mache jetzt mal das hello world programm weg

CloudBeta 
Beitragsersteller
 09.11.2022, 17:35
@Destranix

Jaa es klappt :D habe jetzt ein Blaues Fenster! danke! Ich hoffe das wars dann!

Zumindfst erstmal... ich werde bestimmt wieder ein problem haben wenn ich noch eine lib brauche

Destranix  09.11.2022, 17:38
@CloudBeta

Okay, sehr gut!

Warum fängst du eigentlich direkt mit Graphik-Programmierung an? Oder hast du schon Programmiererfahrung?

CloudBeta 
Beitragsersteller
 09.11.2022, 17:39
@Destranix

Jap ich habe Java gemacht und da mit libgdx gearbeitet (natives framework von openGL) aber ich musste wächseln weil es kein shadowpoint light gab!

Destranix  09.11.2022, 17:49
@CloudBeta

Ich habe damals mit LWJGL angefangen, erst OpenGL, später dnan Vulkan und als in der Uni dann C++ darnkam hab ich da auch hin gewechselt aber bisher noch kaum eigenes Zeug implementiert, da mir die Zeit fehlt. Bzw. nur Zeug, das auf existierendem aufbaut und einen Vulkan-Helper, der aber noch in der Anfangsphase ist.

CloudBeta 
Beitragsersteller
 09.11.2022, 17:57
@Destranix

Kann es sein das ich noch etwas brauche namens assimp? XD

Destranix  09.11.2022, 18:01
@CloudBeta

Assimp ist ein Model-Loader. Gibt aber bessere als den (assimp ist nicht toll zu nutzen).

In einer Vorlesung wurden CGAL, OpenMesh und MPM genannt, die habe ich mir aber noch nicht angeschaut.

Destranix  09.11.2022, 18:12
@CloudBeta

Gemeint ist wohl:

https://learnopengl.com/

Um Files von Blender zu importieren gibt es viele Möglichkeiten. Such dir einen Mldel-Loader aus und arbeite damit.

In welchem File-Format du exportierst musst du sehen. OBJ funktioniert recht einfach und auf vielen Plattformen (kann man auch leicht selbser einen Loader für schreiben), es fehlen aber ein paar Features.
Collada hat mehr Features, ist aber echt kaputt (hatte mal versucht einen Loader dafür zu schreiben. Die Spezifikation ist Kacke). Dann eher FBX oder evtl. noch etwas anderes.

CloudBeta 
Beitragsersteller
 09.11.2022, 18:35
@Destranix

Funktionieren schatten also ich glaube shader mit allen model loadern?

Destranix  09.11.2022, 18:41
@CloudBeta

Du kannst Schatten auch ganz ohne Model-Loader implementieren. Der läd ja nur die Modelle, das hat ja erst einmal nichts mit Schatten zu tun.

CloudBeta 
Beitragsersteller
 09.11.2022, 18:53
@Destranix

Ja aber das licht muss ja irgendwo hängen bleiben und vielleicht weiß er es dann ja nicht war meine idee

Destranix  09.11.2022, 18:58
@CloudBeta

Das Licht ist erst einmal nicht vorhanden, das musst du dir selber implementieren. Bzw. es kann schon sein, dass dir der Model-Loader auch Lichtquellen mit diversen Eigenschaften zurückliefert, aber du hast dann nur so Informationen wie Art der Lichtquelle, Position, richtung, Farbe, ... und muss selber dafür sorgen, dass dann entsprechende Beleuchtung stattfindet.

Ich denke das LearnOpenGL-Tutorial ist da schon gut für den Anfang.

CloudBeta 
Beitragsersteller
 09.11.2022, 20:26
@Destranix

Warte mal... ich dachte ich hätte glut installiert jetzt?

Destranix  09.11.2022, 20:35
@CloudBeta

Wobei wir glut auch nur den header irgendwo reingeschoben haben. Wenn es nicht linkt müsstest du die Libraries auch noch passend platzieren.

CloudBeta 
Beitragsersteller
 09.11.2022, 21:09
@Destranix

Irgendwie gibt es die Funktion

glutSetOption(GLUT_MULTISAMPLE, 8);

nicht 😅

CloudBeta 
Beitragsersteller
 11.11.2022, 20:46
@Destranix

Hallo 😅 2 Tage ists her...

Glad ill irgendwie nicht:

Er sagt ganz oft das er Funktionen redefined hat! so wie warning: "__gl_h_" redefined

  33 | #define __gl_h_ 1

   | 

Und am Ende sagt er C:/Users/alpha/3D Objects/backroomsC/main.cpp:379: undefined reference to `gladLoadGL'

Destranix  11.11.2022, 20:57
@CloudBeta

Und wenn du das "gladLoadGL" rausnimmst? Vielleicht ist das schon geladen und du versuchst es noch einmal zu laden?

Aber keine Ahnung.

CloudBeta 
Beitragsersteller
 11.11.2022, 21:14
@Destranix

Reicht schon beim includen der header. Dann kommen schon die fehler

CloudBeta 
Beitragsersteller
 11.11.2022, 22:30
@Destranix

Ahh in der CMakeList war das bei target link libraries nicht drinne! Aber wenn ich es hinzufüge sagt er er kann es nicht rüber kopieren

Destranix  12.11.2022, 09:17
@CloudBeta

Das hat nichts mit Libraries zu tun. das passiert, da irgendwo ein header doppelt includet wird und der aus welchen Gründen auch immer kein include-Guard hat.

Vielleicht liegt es an dem glut.h das wir manuell hinzugefügt hatten. Wenn du das aus dem ordner, wo du es reingelegt hast, löschst, vielleicht geht es dann?

Ansonsten bräuchte man die ganze Fehlermeldung, die sollte einem nämlich auch sagen, wo die Sachen definiert wurden.

CloudBeta 
Beitragsersteller
 12.11.2022, 09:59
@Destranix

Habe den glut.h jetzt au den desktop verschoben aber geht immer noch nicht. Hier die ganze Fehlermeldung:

[0/22] glad_gl_core_33-generate

Copying "C:/Users/alpha/3D Objects/backroomsC/external/glad/glad" 

Error copying directory from "C:/Users/alpha/3D Objects/backroomsC/C:/Users/alpha/3D Objects/backroomsC/external/glad/glad" to "C:/Users/alpha/3D Objects/backroomsC/cmake-build-debug/C:/Users/alpha/3D Objects/backroomsC/external/glad/glad".

FAILED: /glad-build/include/KHR/khrplatform.h /glad-build/include/glad/gl.h /glad-build/src/gl.c /glad-build/args.txt 

cmd.exe /C "cd /D "C:\Users\alpha\3D Objects\backroomsC\external\glad" && echo Copying "C:/Users/alpha/3D Objects/backroomsC/external/glad/glad" && "C:\Program Files\JetBrains\CLion 2022.2.4\bin\cmake\win\bin\cmake.exe" -E copy_directory "C:/Users/alpha/3D Objects/backroomsC/C:/Users/alpha/3D Objects/backroomsC/external/glad/glad" "C:/Users/alpha/3D Objects/backroomsC/cmake-build-debug/C:/Users/alpha/3D Objects/backroomsC/external/glad/glad" && echo Cleaning /glad-build && "C:\Program Files\JetBrains\CLion 2022.2.4\bin\cmake\win\bin\cmake.exe" -E remove_directory /glad-build && "C:\Program Files\JetBrains\CLion 2022.2.4\bin\cmake\win\bin\cmake.exe" -E make_directory /glad-build && echo Generating with args --out-path /glad-build --api gl:core=3.3 --reproducible c && C:\Users\alpha\AppData\Local\Programs\Python\Python311\python.exe -m glad --out-path /glad-build --api gl:core=3.3 --reproducible c && echo Writing /glad-build/args.txt && echo --out-path /glad-build --api gl:core=3.3 --reproducible c > /glad-build/args.txt"

Destranix  12.11.2022, 10:14
@CloudBeta

Ich dachte du hättest die CMake von GLAD wieder zur Originalen ausgetauscht. Das hier ist die modifizierte Version und die geht mit dem absolutem Pfad nicht.

CloudBeta 
Beitragsersteller
 12.11.2022, 11:58
@Destranix

Wie meinst du? Ich habe

glad_gl_core_33

bei target link libs gestern erst wieder reingemacht weil ich dachte das hilft falls du das meinst

Destranix  12.11.2022, 12:04
@CloudBeta

ich meine folgenden Kommentar meinerseits:

Okay, das ist mal etwas.
Dann bau GLAD wieder ein und mach da auch die Änderungen din der CMakeList rückgängig (lad dir die notfalls neu runter).
Dann änderst du in unserer CMake List folgende Zeile
set(GLAD_SOURCES_DIR "external/glad")
zu
set(GLAD_SOURCES_DIR "${CMAKE_SOURCE_DIR}external/glad")
Das sollte den Fehler, für den wir ein Workaround gebaut hatten, beheben, vielleicht behebt es auch noch die anderen Fehler.
CloudBeta 
Beitragsersteller
 12.11.2022, 12:09
@Destranix

Ahh okay ich dachte du meintest nur das was ich in den letzten paar nachrichten hinzugefügt gabe!

Ahh achso du meinst die CMake ist von GLAD

CloudBeta 
Beitragsersteller
 12.11.2022, 12:25
@Destranix

Okay habe jetzt ist zwar ein error mehr da aber er sagt so 1000 mal das er etwas redifined

erstes:

/glad-build/src/gl.c:4905:72: error: expected ';' before 'load'

 4905 |   glad_glGetConvolutionFilterEXT = (PFNGLGETCONVOLUTIONFILTEREXTPROC) load(userptr, "glGetConvolutionFilterEXT");

   |                                    ^~~~~

   |                                    ;

Ist nicht ganz das erste weil hier die console endet (zu viel text)

Und am ende stop ninja

Destranix  12.11.2022, 12:27
@CloudBeta

Die Message ist kein redefine. Gib mir bitte eine ganze Fehlermeldung. Wenn da etwas redefined wurde, dann müsste da stehen, wo das zuerst definiert wurde und wo es dann erneut defibniert wurde.

CloudBeta 
Beitragsersteller
 12.11.2022, 12:31
@Destranix

Es gibt halt keine Fehlermeldung... So endet es:

   |                   PFNGLTEXCOORD4FVPROC

/glad-build/src/gl.c:6890:70: error: expected ';' before 'load'

 6890 |   glad_glTexCoord4fVertex4fvSUN = (PFNGLTEXCOORD4FVERTEX4FVSUNPROC) load(userptr, "glTexCoord4fVertex4fvSUN");

   |                                   ^~~~~

   |                                   ;

/glad-build/src/gl.c: In function 'gladLoadGL':

/glad-build/src/gl.c:7999:31: warning: passing argument 1 of 'gladLoadGLUserPtr' from incompatible pointer type [-Wincompatible-pointer-types]

 7999 |   return gladLoadGLUserPtr( glad_gl_get_proc_from_userptr, GLAD_GNUC_EXTENSION (void*) load);

   |                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~

   |                |

   |                void (* (*)(void *, const char *))(void)

/glad-build/src/gl.c:7662:44: note: expected 'GLADuserptrloadfunc' {aka 'void (* (*)(const char *, void *))(void)'} but argument is of type 'void (* (*)(void *, const char *))(void)'

 7662 | int gladLoadGLUserPtr( GLADuserptrloadfunc load, void *userptr) {

   |            ~~~~~~~~~~~~~~~~~~~~^~~~

ninja: build stopped: subcommand failed.

Also es gibt errors aber nicht rot mackierT:

  |                   PFNGLTEXCOORD4FVPROC

/glad-build/src/gl.c:6890:70: error: expected ';' before 'load'

 6890 |   glad_glTexCoord4fVertex4fvSUN = (PFNGLTEXCOORD4FVERTEX4FVSUNPROC) load(userptr, "glTexCoord4fVertex4fvSUN");

   |

Destranix  12.11.2022, 12:33
@CloudBeta

Schau mal, ob du irgendwie den Anfang des ganzen bekommst, mit dem Ende kann man wenig anfangen.

Irgendetwas ist da grundlegend kaputt und was das ist steht zumeist am Anfang.

Evtl. kann man erast ein "clr" oder "clear" auf die Konsole machen oder die Konsole größer machen.

CloudBeta 
Beitragsersteller
 12.11.2022, 12:39
@Destranix

Hm... ich sehe keine möglichkeit die CLion console größer zu machen

Destranix  12.11.2022, 12:41
@CloudBeta

Dann darin scrollen? Oder in den Einstellungen? Oder den Output woanders rausschreiben lassen?

CloudBeta 
Beitragsersteller
 12.11.2022, 12:43
@Destranix

Aber wie? Das mit dem CMD hat ja nicht so gut geklappt... das haben wir ja schon probiert und wenn ich den command den CLion benutzt in dem cmd laufen lasse wird das trortzdem in clion geschrieben

Destranix  12.11.2022, 12:44
@CloudBeta

Was weiß ich, ich nutze kein CLion. Du hast das vor dir und du hast Internet, irgendwie wird das gehen.

Ich google auch noch mal, aber deren Seite läuft nicht ordentlich.

CloudBeta 
Beitragsersteller
 12.11.2022, 12:52
@Destranix

Ahja :D danke habe ich nicht gefunden weis nicht wie man das nennt...

Am anfang steht das

[1/3] Building C object CMakeFiles/glad_gl_core_33.dir/glad-build/src/gl.c.obj

FAILED: CMakeFiles/glad_gl_core_33.dir/glad-build/src/gl.c.obj 

C:\msys64\mingw64\bin\cc.exe -I"C:/Users/alpha/3D Objects/backroomsC/external/glfw-3.3.8/include" -I"C:/Users/alpha/3D Objects/backroomsC/external/glfw-3.3.8/deps" -I/glad-build/include -g -MD -MT CMakeFiles/glad_gl_core_33.dir/glad-build/src/gl.c.obj -MF CMakeFiles\glad_gl_core_33.dir\glad-build\src\gl.c.obj.d -o CMakeFiles/glad_gl_core_33.dir/glad-build/src/gl.c.obj -c /glad-build/src/gl.c

/glad-build/src/gl.c:658:1: error: unknown type name 'PFNGLACCUMXOESPROC'; did you mean 'PFNGLACCUMPROC'?

 658 | PFNGLACCUMXOESPROC glad_glAccumxOES = NULL;

   | ^~~~~~~~~~~~~~~~~~

   | PFNGLACCUMPROC

/glad-build/src/gl.c:658:39: warning: initialization of 'int' from 'void *' makes integer from pointer without a cast [-Wint-conversion]

 658 | PFNGLACCUMXOESPROC glad_glAccumxOES = NULL;

   |                    ^~~~

Ich kann jetzt nicht durch die ganze konsole scrollen und nach errors suchen weil das ziemlich viele Zeilen sind

Destranix  12.11.2022, 12:59
@CloudBeta

Das sieht schon besser aus.

Das ist dann der Fehler, den wir vorhin auch schon hatten, dass glext.h nicht gefunden wird.

Schau mal unter

C:\msys64\mingw64\include

ob sich da die OpenGL-Header im Unterverzeichnis "GL" befinden.

Wenn nicht, dann kopier dir die von da rüber, wo du sie das letzte mal gefunden hattest.

CloudBeta 
Beitragsersteller
 12.11.2022, 13:24
@Destranix

Mintest du include/GL ? glext.h ist drinn aber ich habe glut grade rausgenommen meintest du ja

Destranix  12.11.2022, 13:24
@CloudBeta

Bitte sag mir den ganzen Pfad und welche Dateien darin liegen.

Destranix  12.11.2022, 13:28
@CloudBeta

Schau mal ob in einer der Dateien der Typ

PFNGLACCUMXOESPROC

definiert wird.

Müsste eigentlich geschehen.

CloudBeta 
Beitragsersteller
 12.11.2022, 13:35
@Destranix

In glext.h steht:

typedef void (APIENTRYP PFNGLACCUMXOESPROC) (GLenum op, GLfixed value);

Destranix  12.11.2022, 13:36
@CloudBeta

Gut, das war zu erwarten, das passt also.

Führ mal folgendes Command aus:

C:\msys64\mingw64\bin\cc.exe -xc++ -E -v -

Das sollte uns dann ausgeben, welche Ordner vom gcc includet werden.

CloudBeta 
Beitragsersteller
 12.11.2022, 13:38
@Destranix

Ganz schön viel text:

C:\Windows\system32>C:\msys64\mingw64\bin\cc.exe -xc++ -E -v -

Using built-in specs.

COLLECT_GCC=C:\msys64\mingw64\bin\cc.exe

Target: x86_64-w64-mingw32

Configured with: ../gcc-12.2.0/configure --prefix=/mingw64 --with-local-prefix=/mingw64/local --build=x86_64-w64-mingw32 --host=x86_64-w64-mingw32 --target=x86_64-w64-mingw32 --with-native-system-header-dir=/mingw64/include --libexecdir=/mingw64/lib --enable-bootstrap --enable-checking=release --with-arch=x86-64 --with-tune=generic --enable-languages=c,lto,c++,fortran,ada,objc,obj-c++,jit --enable-shared --enable-static --enable-libatomic --enable-threads=posix --enable-graphite --enable-fully-dynamic-string --enable-libstdcxx-filesystem-ts --enable-libstdcxx-time --disable-libstdcxx-pch --enable-lto --enable-libgomp --disable-multilib --disable-rpath --disable-win32-registry --disable-nls --disable-werror --disable-symvers --with-libiconv --with-system-zlib --with-gmp=/mingw64 --with-mpfr=/mingw64 --with-mpc=/mingw64 --with-isl=/mingw64 --with-pkgversion='Rev1, Built by MSYS2 project' --with-bugurl=https://github.com/msys2/MINGW-packages/issues --with-gnu-as --with-gnu-ld --disable-libstdcxx-debug --with-boot-ldflags=-static-libstdc++ --with-stage1-ldflags=-static-libstdc++

Thread model: posix

Supported LTO compression algorithms: zlib zstd

gcc version 12.2.0 (Rev1, Built by MSYS2 project)

COLLECT_GCC_OPTIONS='-E' '-v' '-mtune=generic' '-march=x86-64'

 C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/12.2.0/cc1plus.exe -E -quiet -v -iprefix C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/12.2.0/ -D_REENTRANT - -mtune=generic -march=x86-64 -dumpbase -

ignoring nonexistent directory "C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/12.2.0/../../../../x86_64-w64-mingw32/include"

ignoring duplicate directory "C:/msys64/mingw64/lib/gcc/../../lib/gcc/x86_64-w64-mingw32/12.2.0/../../../../include/c++/12.2.0"

ignoring duplicate directory "C:/msys64/mingw64/lib/gcc/../../lib/gcc/x86_64-w64-mingw32/12.2.0/../../../../include/c++/12.2.0/x86_64-w64-mingw32"

ignoring duplicate directory "C:/msys64/mingw64/lib/gcc/../../lib/gcc/x86_64-w64-mingw32/12.2.0/../../../../include/c++/12.2.0/backward"

ignoring duplicate directory "C:/msys64/mingw64/lib/gcc/../../lib/gcc/x86_64-w64-mingw32/12.2.0/include"

ignoring nonexistent directory "D:/a/msys64/mingw64/include"

ignoring nonexistent directory "/mingw64/include"

ignoring duplicate directory "C:/msys64/mingw64/lib/gcc/../../lib/gcc/x86_64-w64-mingw32/12.2.0/include-fixed"

ignoring nonexistent directory "C:/msys64/mingw64/lib/gcc/../../lib/gcc/x86_64-w64-mingw32/12.2.0/../../../../x86_64-w64-mingw32/include"

ignoring nonexistent directory "D:/a/msys64/mingw64/include"

#include "..." search starts here:

#include <...> search starts here:

 C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/12.2.0/../../../../include/c++/12.2.0

 C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/12.2.0/../../../../include/c++/12.2.0/x86_64-w64-mingw32

 C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/12.2.0/../../../../include/c++/12.2.0/backward

 C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/12.2.0/include

 C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/12.2.0/../../../../include

 C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/12.2.0/include-fixed

End of search list.

Destranix  12.11.2022, 13:44
@CloudBeta

Hm, unser Include-Dir ist dabei

C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/12.2.0/../../../../include

Das entspricht

C:/msys64/mingw64/include

Dann ist jetzt die Frage, warum zur Hölle GLAD das nicht findet.

Schau dir mal

/glad-build/src/gl.c

welche Dateien das includet.

CloudBeta 
Beitragsersteller
 12.11.2022, 13:49
@Destranix

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

#include <glad/gl.h>

CloudBeta 
Beitragsersteller
 12.11.2022, 13:53
@Destranix

Hm mir fällt grade auf es gibt kein glad/gl.h nur GL/gl.h aber in clion include ich das glad/gl.h wie auch immer:

#include <windows.h>

#include <stddef.h>

CloudBeta 
Beitragsersteller
 12.11.2022, 13:54
@CloudBeta

Ich lese das grade alles über explorer und editor ab nicht über CLion

Destranix  12.11.2022, 13:55
@CloudBeta

Doch, es gibt ein glad/gl.h Im Zweifelsfalle liegt das im Build-Ordner.

CloudBeta 
Beitragsersteller
 12.11.2022, 14:02
@Destranix

Ah ja genau da ist es. Da sehe ich garkeine includes. Ah doch wenn man ganz weit runterscrollt

#include <KHR/khrplatform.h>

#ifdef GLAD_INTERNAL_HAVE_WINAPIFAMILY

   #include <winapifamily.h>

und das wars dann

Destranix  12.11.2022, 14:03
@CloudBeta

Ganz unten? Okay.

Waren in der gl.c evtl. noch irgendwelche Includes versteckt (weiter unten)?

CloudBeta 
Beitragsersteller
 12.11.2022, 14:05
@Destranix

Ne nicht ganz unten der KHR ist so bei der hälfte und der winapifamily so bei einem viertel

In gl.c im glad-build ordner

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

#include <glad/gl.h>

Destranix  12.11.2022, 14:09
@CloudBeta

Hm, okay. Dann Schreib mir noch einmal den Inhalt deiner CMakeList.txt auf, dann eröffne ich einen neuen Issue in Github-Repro.

Keine Ahnung, wieso das nicht geht.

CloudBeta 
Beitragsersteller
 12.11.2022, 14:11
@Destranix

Okay :)

cmake_minimum_required(VERSION 3.23)

set(PROJECT_NAME backroomsC)

project(${PROJECT_NAME})

add_executable(${PROJECT_NAME} main.cpp util/List.h util/List.cpp)
set(SOURCE_FILES main.cpp) # welche Dateien kompiliert werden sollen

#set(ENV{PYTHONPATH} ENV{PYTHONPATH}":${GLAD_SOURCES_DIR}")
set(GLFW_SOURCE_DIR  "external/glfw-3.3.8/src")
set(GLAD_SOURCES_DIR "${CMAKE_SOURCE_DIR}/external/glad")

set(GLFW_LIBRARY_TYPE STATIC)
set(GLFW_BUILD_EXAMPLES OFF)
set(GLFW_BUILD_TESTS OFF)
set(GLFW_BUILD_DOCS OFF)
set(GLFW_INSTALL OFF)
set(CMAKE_STATIC_LIBRARY_SUFFIX ".lib")
set(CMAKE_SHARED_LIBRARY_SUFFIX ".dll")

find_package(OpenGL REQUIRED)
if(NOT OPENGL_FOUND)
    message(ERROR "OPENGL not found!")
endif(NOT OPENGL_FOUND)
if(OPENGL_INCLUDE_DIR STREQUAL "")
    message(ERROR "OPENGL_INCLUDE_DIR is empty!")
endif(OPENGL_INCLUDE_DIR STREQUAL "")
include_directories(${OPENGL_INCLUDE_DIRS})

add_subdirectory(external/glfw-3.3.8)

include_directories(${OPENGL_INCLUDE_DIR})

include_directories(external/glfw-3.3.8/include external/glfw-3.3.8/deps)

add_subdirectory("${GLAD_SOURCES_DIR}/cmake")
glad_add_library(glad_gl_core_33 REPRODUCIBLE LOCATION "/glad-build" API gl:core=3.3)

target_link_libraries(${PROJECT_NAME} glad_gl_core_33 ${GLFW3_LIBRARY} glfw ${OPENGL_LIBRARIES})
Destranix  12.11.2022, 14:40
@CloudBeta

Am Anfang deines eigenen Source-Codes schau mal, dass der Include von "glad/gl.h" vor dem Include von glfw steht.

CloudBeta 
Beitragsersteller
 12.11.2022, 14:55
@Destranix

Läuft aufs selbe raus

FAILED: CMakeFiles/glad_gl_core_33.dir/glad-build/src/gl.c.obj 

C:\msys64\mingw64\bin\cc.exe -I"C:/Users/alpha/3D Objects/backroomsC/external/glfw-3.3.8/include" -I"C:/Users/alpha/3D Objects/backroomsC/external/glfw-3.3.8/deps" -I/glad-build/include -g -MD -MT CMakeFiles/glad_gl_core_33.dir/glad-build/src/gl.c.obj -MF CMakeFiles\glad_gl_core_33.dir\glad-build\src\gl.c.obj.d -o CMakeFiles/glad_gl_core_33.dir/glad-build/src/gl.c.obj -c /glad-build/src/gl.c

auch alles neu defined und so

und unknown tyope

Destranix  12.11.2022, 14:58
@CloudBeta

Dann mach mal aus folgendem:

add_subdirectory(external/glfw-3.3.8)

include_directories(${OPENGL_INCLUDE_DIR})

include_directories(external/glfw-3.3.8/include external/glfw-3.3.8/deps)

add_subdirectory("${GLAD_SOURCES_DIR}/cmake")
glad_add_library(glad_gl_core_33 REPRODUCIBLE LOCATION "/glad-build" API gl:core=3.3)

target_link_libraries(${PROJECT_NAME} glad_gl_core_33 ${GLFW3_LIBRARY} glfw ${OPENGL_LIBRARIES})

folgendes:

add_subdirectory("${GLAD_SOURCES_DIR}/cmake")

glad_add_library(glad_gl_core_33 REPRODUCIBLE LOCATION "/glad-build" API gl:core=3.3)

add_subdirectory(external/glfw-3.3.8)

include_directories(${OPENGL_INCLUDE_DIR})

include_directories(external/glfw-3.3.8/include external/glfw-3.3.8/deps)

target_link_libraries(${PROJECT_NAME} glad_gl_core_33 ${GLFW3_LIBRARY} glfw ${OPENGL_LIBRARIES})
CloudBeta 
Beitragsersteller
 12.11.2022, 15:12
@Destranix

Ja... also naja wenn ich es include schmiert das Fenster sofort ab... also wird weiß und wenn ich es nicht include klappt es

Destranix  12.11.2022, 15:14
@CloudBeta

Solange es baut ist das schon ein Fortschritt. Für das sofortige abschmieren müsste man noch eine andere Lösung finden (bzw. erst einmal einen Error-handler einbauen oder soetwas).

Also es baut wenn du includest?

CloudBeta 
Beitragsersteller
 12.11.2022, 15:15
@Destranix

Ah ich musste

gladLoadGL(glfwGetProcAddress);

noch machen jetzt klappts :D

danke

CloudBeta 
Beitragsersteller
 29.12.2022, 13:39
@Destranix

Guten Tag. Ich hab e gleich zwei probleme! Ich brauche jetzt noch eine Lib und wie es die anderen machen klappt es bei mir natürlich auch mal wieder nicht! Und zweitens finde ich keine lösung dazu wie man methoden von einem namespace von einer header file in einer cpp file difinieren kann!
Erstmal zu der lib. Ich brauche die assimp lib zum inport von 3D models! Wenn ich es in dem cmake -gui.exe mache wie es alle machen kommt der fehler das er den compiler nicht finden konnte. Der genau error ist:

  Das System kann die angegebene Datei nicht finden

CMake Error: CMAKE_C_COMPILER not set, after EnableLanguage

CMake Error: CMAKE_CXX_COMPILER not set, after EnableLanguage

Da es so ähnlich wie die anderen libs aufgebaut ist habe ich es in der cmakelist.txt versucht mit

set(ASSETS_SOURCE_DIR assets)
set(ASSETS_DEST_DIR cmake-build-debug)
include_directories(external/glfw-3.3.8/include external/glfw-3.3.8/deps external/assimp/include)

target_link_libraries(${PROJECT_NAME} ${ASSIMP_LIBRARIES})

Da kommt dann aber

undefined reference to `aiImportFile'.

Zum zweiten problem komme ich dann später. Wäre nett wenn sie mir noch einmal aushelfen würden :)

Destranix  29.12.2022, 15:00
@CloudBeta

Schreib mir hier noch einmal einen Kommentar, dann schaue ich, dass ich mir das die nächsten Tage einmal anschaue.

Ansonsten kannst du derweilen mal irgendetwas mit "findPackage" oder so versuchen oder online nach Beispielen suchen.

CloudBeta 
Beitragsersteller
 29.12.2022, 15:10
@Destranix

So wie ich find package versucht habe hat er es nicht gefunden und online hat niemand anders das problem...Die haben dann einfach vergessen den compiler in die umgebungs variablen zu setzetn zb.

Destranix  30.12.2022, 12:55
@CloudBeta

Pack Assimp in ein Directory wie vorher die anderen Libraries auch und include das Subdirectory in deinem CMake-File. Zudem fügst du Include- und Library-Directory hinzu.

Folgende Konfiguration:

set(BUILD_SHARED_LIBS OFF);
set(ASSIMP_BUILD_ASSIMP_TOOLS OFF);
set(ASSIMP_BUILD_SAMPLES OFF);
set(ASSIMP_BUILD_TESTS OFF);
set(ASSIMP_INSTALL OFF);
CloudBeta 
Beitragsersteller
 30.12.2022, 13:21
@Destranix

Hallo, Ich habe es vielleicht schon geschafft aber das zweite problem lässt es mich nicht ausprobieren... multiple definition von allen funktionen in einer header file. Am anfang steht halt


#ifndef BACKROOMS_GLFWUTILS_H
#define BACKROOMS_GLFWUTILS_H

und am ende

#endif

Trotzdem passiert das. Ist das problem weg wenn ich alles in einer cpp file definiere?
Ich frage lieber vorher weil das echt viele funktionen sind die ich gemacht habe.

CloudBeta 
Beitragsersteller
 30.12.2022, 16:32
@Destranix

Es ist ja nicht nur das die methoden doppelt deffiniert werden... auch die variablen! Ich dachte man soll die in der header file machen... Ach ich verstehe nichtmal mehr die errors! Hier mal ein beispiel:
c:/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/12.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: CMakeFiles/backrooms.dir/sources/glfwUtils.cpp.obj:glfwUtils.cpp:(.bss+0x8): multiple definition of `glfw::mainWindow'; CMakeFiles/backrooms.dir/main.cpp.obj:c:/mingw64/include/c++/12.2.0/bits/stl_vector.h:312: first defined here

Was hat jetzt vector damit zu tun? Und warum soll da etwas mit glfw::mainWindow defined sein?

Window mainWindow = nullptr;

Und hier noch eins mit vectoren
c:/mingw64/include/c++/12.2.0/bits/stl_vector.h:100: multiple definition of `glfw::mainWindow'; CMakeFiles/backrooms.dir/main.cpp.obj:c:/mingw64/include/c++/12.2.0/bits/stl_vector.h:312: first defined here

CloudBeta 
Beitragsersteller
 30.12.2022, 23:13
@Destranix

Ja gut ich musste nur alles in die herder file machen.
Jetzt geht alles vielleicht. Allerdings braucht es wirklich 10 Minuten zum bauen! Ich habe gelesen das ich die dynamisch linken muss. Allerdings haben wir das ja ausgeschaltet. Ich finde im internett auch keine hilfe dazu. Ich habe jetzt mal wie aus dem internett versucht und er baut seit 30 min...

Destranix  31.12.2022, 10:54
@CloudBeta
Es ist ja nicht nur das die methoden doppelt deffiniert werden... auch die variablen!

Selbes Problem. Der Include-Guard funktioniert nur jeweils für einen Build-Prozess. Wenn jetzt aber Dateien aus verschiedenen Build-Prozessen denselben Header includen, dann kommt es zu Problemen.

Variablen würde man entsprechend als "extern" deklarieren und dann in einem CPP-File definieren.

Was hat jetzt vector damit zu tun?

Ich vermute irgendwo wird ein Vector mit dem Typ als Template-Parameter verwendet.

Und warum soll da etwas mit glfw::mainWindow defined sein?

Offenbar existiert eine Variable "mainWindow" im Namespace "glfw", welche mehrfach definiert wird.

Ich vermute, irgendwo wurde der Header vergessen zu includen oder eine Forward-Declaration übersehen oder soetwas.

Allerdings braucht es wirklich 10 Minuten zum bauen!

Ja, das wird vermutlich an irgendwelchen komplizierten Templates oder so liegen. Solche kann man evtl. vereinfachen.

Dynamisch Linken bringt nur bedingt etwas. Also ja, das kann helfen, aber das muss man auch erst zum Laufen bringen.
Du müsstest "SHARED_LIBS" aktivieren und "SHARED" als Build-Type setzen, wo du das möchtest.

Im Endeffekt macht das dann aber womöglich dein Programm langsamer.

CloudBeta 
Beitragsersteller
 31.12.2022, 23:39
@Destranix

Jo ich habe alle functionen in einer header datei definiert. Ich meine es ging vorher wirklich nicht! Und das glfw::mainWindow habe ich als inline deklariet jetzt.

Meinst du damit es schneller läuft etwas in meinem code verändern oder in dem von assimp?

Es läd ja immerhin... Allerdings ist alles zielich verbugt mit dem program was ich geschrieben habe zum lesen der datei. Wenn du lust und Zeit und schonmal mit assimp gearbeitet hast könntest du drüber schauen?

Und Frohen neues :)

Destranix  01.01.2023, 10:34
@CloudBeta
Meinst du damit es schneller läuft etwas in meinem code verändern oder in dem von assimp?

Lässt sich nicht allgemein sagen. Hängt halt davon ab, was genau das Bauen verlangsamt.

Wenn du lust und Zeit und schonmal mit assimp gearbeitet hast könntest du drüber schauen?

Assimp ist eine Qual, also nein. Wobei Assimp sogar noch besser ist als manch anderes, aber dennoch will man das eigentlich nicht verwenden, zu viele Sachen, die nicht klar dokumentiert sind und so.

Allerdings ist alles zielich verbugt mit dem program was ich geschrieben habe zum lesen der datei.

Kannst du das genauer ausführen?

Destranix  01.01.2023, 13:44
@CloudBeta

Hm, ja genau, der Texture-Stack in Assimp war mit das hässlichste. Da musst du vermutlich etwas rumprobieren, bis das geht.

CloudBeta 
Beitragsersteller
 01.01.2023, 13:48
@Destranix

Ich kriege halt die tex:uv von einem vertex so

try {
    auto tex_uvp = mesh->mTextureCoords[0];
    if (tex_uvp != nullptr)
        tex_uv = tex_uvp[j];
    else
        textureNull = false;
} catch (...) {print("vertex doesnt not contain attribut: tex_uv")textureNull = false;}

Und die textur einfach mit aigetTexture

Ich brauche nur den path und den typ. Die textur klasse kommt von dem tutorial von victor

Weiß jetzt nicht was ich so verändern kann

Und was auch komisch ist ich musste cuddling mode auf CCW umstellen. Vorher war es auf CW

Destranix  01.01.2023, 13:51
@CloudBeta

Lies dir die Assimp-Spezifikation durch. Da steht bisschen etwas dazu drinnen, wie du aus dem texture-Stack deine Texturen bekommst.

Bzw. kann es auch schon einmal hilfreich sein, sich den Texture-Stack ausgeben zu lassen, dann siehst du vielleicht, wo es hakt (evtl. Operationen des Stacks nicht ausgeführt oder falsches Format für die texture verwendet oder sonstiges).

By the way: Du solltest If-Anweisungen nur mit geschweiften Klammern verwenden der Wartbarkeit wegen.

Oh und in welcher Sprache programmierst du? Sieht nicht nach C++ aus.

CloudBeta 
Beitragsersteller
 01.01.2023, 13:53
@Destranix

ja doch ist c++ aber print ist #define print(message) std::cout << message << std::endl;

Und was ist der texture stack? Der path zur texture ist korrekt! Also das kann es ja schon nicht sein denke ich

CloudBeta 
Beitragsersteller
 01.01.2023, 14:05
@Destranix

Achso ja aber ich entnehme ja nur den texture path und die tex_uv. DIeses mappinng und so brauch ich noch garnicht

Destranix  01.01.2023, 14:06
@CloudBeta

Das weißt du nicht sicher. Hängt davon ab, wie das in der Model-Datei gespeichert ist und wie Assimp dir das präsentiert.

Deshalb würde ich den Stack auch zuerst ausprinten um zu schauen, ob eben das der Fall ist.

CloudBeta 
Beitragsersteller
 01.01.2023, 14:12
@Destranix

Muss ichjetzt jedes einzelne item kriegen oder gibt es eine funktion die mir einen string über alles ausgibt? Schätze das aireturn ist es nicht

Destranix  01.01.2023, 14:13
@CloudBeta

Ich meine man musste sich da selber eine Funktion schreiben. Aber vielleicht hat das im Internet auch schon jemand für dich gemacht.

Ich könnte dir höchstens eine Java-Version davon geben.

CloudBeta 
Beitragsersteller
 01.01.2023, 14:14
@Destranix

Ist doch dann in lwjgl und nicht in assimp oder?

CloudBeta 
Beitragsersteller
 01.01.2023, 14:18
@CloudBeta

Ohhh kann sein das ich

aiGetMaterialUVTransform

brauch weil ich hab in dem blender project mit den vector was verschoben
Aber ergibt trotzdem keinen sinn das die textur grau ist.
Habe zwar kein ambient angegeben aber diffuse sollte doch gehen oder?

Destranix  01.01.2023, 14:20
@CloudBeta

Ich kenne deinen TextureStack nicht. Wie gesagt, schau dir den an (evtl. mit einem Debugger zuerst) und schau, ob da was draufliegt, was du nicht beachtet hast.

Fehler können natürlich auch an anderer Stelle liegen.

CloudBeta 
Beitragsersteller
 01.01.2023, 14:27
@Destranix

Ich verstehe halt auch den code von dem tutorial nicht ganz... Da hat er JSON benutzt. Aber der code ist so durch einander das ich nicht weiß wie er funktioniert. Darum konnte ich ihn uch nicht erweitern. Mein model konnte es nicht laden. Jetzt muss ich halt auch mit der mesh klasse und allen anderen klassen von ihm weiter arbeiten und kann kein anderes tutorial irgendwie mit einbringen ohne es umzucshreiben. Aber soviel ich sehen kann hat er auch nur diffuse, specular texture und die Vevor normals, tex_uv, color un position und die indiceis aus der file entnommen. Was auch komisch ist:
https://workupload.com/file/LtN6ycQbjLd

So sieht das in blender nicht aus

Destranix  01.01.2023, 14:30
@CloudBeta

Hier mein Java-Code. Ist schon einige Jährchen alt, daher vermutlich nicht so hilfreich:

https://pastebin.com/zhPDJY0y

Was sein Tutorial angeht: Wenn du es nicht verstehst, schreib dir selber etwas, das du verstehst.

CloudBeta 
Beitragsersteller
 01.01.2023, 14:34
@Destranix

genau das habe ich ja grade versucht 😂
assimp sieht einfacher aus als JSON. Chat GPT hat mir den weg gewiesen! Kann ja falsch sein was er sagt aber funktioniert halt schon so halb, indicis und vector (immhin position) ist richtig. Sind 120 Zeilen insgesammt geworden

Destranix  01.01.2023, 14:37
@CloudBeta

Naja, ich würde mich ja eher an OBJ und MTL versuchen. Von Collada rate ich dringend ab.

Was das für ein JSON-Format ist weiß ich nicht, aber da kannst du auch schauen, ob du da eine gute Dokumentation zu findest online. Wie lautet denn die Dateiendung?

CloudBeta 
Beitragsersteller
 01.01.2023, 14:44
@Destranix

Also er hat es für gltf ausgelegt. Auch genau das vormat in dem ich meine blender projekte exportiere.
Ja obj soll einfach sein aber soll auch nicht so viel information haben.

CloudBeta 
Beitragsersteller
 01.01.2023, 15:52
@Destranix

Ich verstehe ja das es blöcke sind die man wie eine hashmap kriegt. Aber ich weiß halt nicht wofür was gut ist. Also ja diffuse ist grundfarbe meine ich, ambient ist licht intensität (ich weiß jetzt schon nicht in welchem block das sein soll) und specular brauch man eine specular map für. Da weiß ich auch nicht in welchem block die sich befinden soll.

Da würde ich leieber einer library nehmen die mir das einfach ausstellt. hat ja aber nicht so gut geklappt... Vermutlich weil ich immernoch nicht weiß wofür was gut ist.
Rückmeldung zu dem code krieg ich ja auch nirgendwo. Auf stack overflow werden meine fragen immer ohne grund gebannt

CloudBeta 
Beitragsersteller
 01.01.2023, 16:08
@Destranix

Ja hä genau die weiß ich doch. Aber wo die in der textur sind! Ich denke mal das die diffuse textur die normal textur ist aber hat nicht so toll geklappt in assimp

Destranix  01.01.2023, 16:12
@CloudBeta

Ich verstehe nicht, was du wissen möchtest.

In der Regel hast du ein paar Texturen, die du an unterschiedlichen Stellen verwenden kannst.

Ambient-Texture für die Farbe des Materials im ambientem Licht. Diffuse-Texture für die Farbe des Materials im diffusem Licht. Das spekulare Licht ist zumeist weiß, dafür werden andere Parameter, die Roughness oder die Specularity per Textur variiert.

CloudBeta 
Beitragsersteller
 01.01.2023, 16:39
@Destranix

Ja mit den klassen von dem tutorial muss ich nur textures.push_back(Texture("diffuse", texture_path); machen und dann sollte es das sein... Da kann ich ja nicht viel falsch machen!

for (int j = 0; j < aiGetMaterialTextureCount(material, aiTextureType_DIFFUSE); j++) {
    print("get diffuse texture at " << j)
    aiGetMaterialTexture(material, aiTextureType_DIFFUSE, j, texurePath);
    print("got diffuse material")
    print(fileDirectory + texurePath->C_Str());
    Texture diffuse((fileDirectory + texurePath->C_Str()).c_str(), "diffuse", j);
    textures.push_back(diffuse);
    print("added one diffuse texture")
    texurePath->Clear();
}
Destranix  01.01.2023, 16:50
@CloudBeta
C_Str

müsste kleingeschrieben werden, wenn du nicht irgendeine kjomische eigene Klasse für Pfade verwendest, die das, warum auch immer, großschreibt.

CloudBeta 
Beitragsersteller
 01.01.2023, 19:47
@Destranix

Das ist ein aiString und kein normaler ;) hätte ich villeicht noch dazu schreiben müssen

CloudBeta 
Beitragsersteller
 01.01.2023, 19:50
@Destranix

Gibt es vielleicht einbfach ne file wo die mesh class mitgeliefert wird? 😂 also mit VBO, VBA und EBO ? Den rest würde ich vielleicht schaffen 😂

CloudBeta 
Beitragsersteller
 01.01.2023, 19:57
@CloudBeta

Ne... an den sachen kann es auch nicht liegen

CloudBeta 
Beitragsersteller
 02.01.2023, 01:43
@Destranix

Mir fällt auch grade auf... Müsste eine obj file nicht genau so viele vector pos, texture_uv und normals haben? Weil meine ist ganz komisch!

  # Blender 3.4.1
# www.blender.org
mtllib xoneone.mtl
o Würfel.001
v 0.000000 0.000000 2.000000
v 0.000000 8.000000 2.000000
v 0.000000 0.000000 0.000000
v 0.000000 8.000000 0.000000
v 2.000000 0.000000 2.000000
v 2.000000 8.000000 2.000000
v 2.000000 0.000000 0.000000
v 2.000000 8.000000 0.000000
vn -1.0000 -0.0000 -0.0000
vn -0.0000 -0.0000 -1.0000
vn 1.0000 -0.0000 -0.0000
vn -0.0000 -0.0000 1.0000
vn -0.0000 -1.0000 -0.0000
vn -0.0000 1.0000 -0.0000
vt 0.996662 -1.513459
vt 0.002003 -1.508075
vt 0.596113 0.200438
vt 0.996662 2.512113
vt 0.002003 2.506729
vt 0.596113 0.000199
vt 0.007343 -1.513459
vt 0.999332 -1.510767
vt 0.794353 0.200438
vt 0.002003 2.512113
vt 0.999332 2.510767
vt 0.596113 0.200040
vt -0.006008 -1.510767
vt 0.996662 -1.508075
vt 0.596113 0.400279
vt -0.006008 2.510767
vt 0.996662 2.506729
vt 0.794353 0.000199
vt 0.000668 -1.510767
vt 1.006008 -1.510767
vt 0.794353 0.400279
vt 0.000668 2.510767
vt 1.006008 2.510767
vt 0.794353 0.200040
s 0
usemtl Material
f 1/1/1 2/4/1 4/10/1 3/7/1
f 3/8/2 4/11/2 8/22/2 7/19/2
f 7/20/3 8/23/3 6/16/3 5/13/3
f 5/14/4 6/17/4 2/5/4 1/2/4
f 3/9/5 7/21/5 5/15/5 1/3/5
f 8/24/6 4/12/6 2/6/6 6/18/6
Destranix  02.01.2023, 09:06
@CloudBeta
Das ist ein aiString und kein normaler ;) hätte ich villeicht noch dazu schreiben müssen

Hätte ich auch selber sehen können. Wie ich sowas hasse, wenn die einfach ihre Methoden unsinnig benennen, statt sich an den existierenden Standard zu halten.

Gibt es vielleicht einbfach ne file wo die mesh class mitgeliefert wird? 😂 also mit VBO, VBA und EBO ? Den rest würde ich vielleicht schaffen

Was meinst du? Willst du einen Assimp-Loader? Oder willst du meine LWJGL-Klasse für die Mesh? Ich könnte dir auch das ganze Projekt geben, aber das ist Vulkan und nur zum testen.

Mir fällt auch grade auf... Müsste eine obj file nicht genau so viele vector pos, texture_uv und normals haben? Weil meine ist ganz komisch!

Greift man nicht dann mittels Index darauf zu? Dann darf man halt nur die Indizes verwenden, für die man Daten angegeben hat.

Und noch einmal zu folgendem:

Ja mit den klassen von dem tutorial muss ich nur textures.push_back(Texture("diffuse", texture_path); machen und dann sollte es das sein... Da kann ich ja nicht viel falsch machen!

Naja, je nachdem. Wenn im TextureStack steht, dass du mit der Textur erst noch etwas machen musst, das machst du hier ja nicht.
Und weiteres hängt auch von der Texture-Klasse ab. Wenn da das Dateiformat nicht passt geht das auch schief.

CloudBeta 
Beitragsersteller
 02.01.2023, 14:21
@Destranix

Also hier der getTextures vom tutorial:

std::vector<Texture> textures;

std::string fileStr = std::string(file);
std::string fileDirectory = fileStr.substr(0, fileStr.find_last_of('/') + 1);

// Go over all images
for (unsigned int i = 0; i < JSON["images"].size(); i++)
{
    // uri of current texture
    std::string texPath = JSON["images"][i]["uri"];

    // Check if the texture has already been loaded
    bool skip = false;
    for (unsigned int j = 0; j < loadedTexName.size(); j++)
    {
        if (loadedTexName[j] == texPath)
        {
            textures.push_back(loadedTex[j]);
            skip = true;
            break;
        }
    }

 Nur bis hier hion wichtig glaub ich
  
      // If the texture has been loaded, skip this
    if (!skip)
    {
        // Load diffuse texture
        if (texPath.find("baseColor") != std::string::npos)
        {
            Texture diffuse = Texture((fileDirectory + texPath).c_str(), "diffuse", loadedTex.size());
            textures.push_back(diffuse);
            loadedTex.push_back(diffuse);
            loadedTexName.push_back(texPath);
        }
            // Load specular texture
        else if (texPath.find("metallicRoughness") != std::string::npos)
        {
            Texture specular = Texture((fileDirectory + texPath).c_str(), "specular", loadedTex.size());
            textures.push_back(specular);
            loadedTex.push_back(specular);
            loadedTexName.push_back(texPath);
        }
    }
}

return textures;

Da nimmt er halt einfach die textur und bearbeitet nichts nach.

Und ich meine die obj file ist komisch weil ich ja in einem vertex die pos, normal, color und tex:uv speicher. Wie soll ich das in einem vertex speichern wenn es von allen unterchiedliche anzahl gibt?

Destranix  02.01.2023, 14:27
@CloudBeta
Da nimmt er halt einfach die textur und bearbeitet nichts nach.

Was dann vielleicht auch Ursache für das falsche Erscheinen ist. Darum geht es doch, oder nicht?

Und ich meine die obj file ist komisch weil ich ja in einem vertex die pos, normal, color und tex:uv speicher. Wie soll ich das in einem vertex speichern wenn es von allen unterchiedliche anzahl gibt?

Du verwendest Indices. Wie du siehst bekommt jeder Vertex jeweils einen Index für Position, einen für Norlmale und einen für Textur.

CloudBeta 
Beitragsersteller
 02.01.2023, 14:35
@Destranix

Ohhh er benutzt normal für die indices! Aber woher soll denn der model loader das wissen? Und der code von oben ist von dem tutorial von victor mit dem JSON der hat nicht mit meinem model geklappt aber mit anderen. Und die klappen auch nicht mit assimp.

Und wo kommen die tex_uv's hin? weder in die vertex noch indices passen die

Destranix  02.01.2023, 14:41
@CloudBeta
Ohhh er benutzt normal für die indices!

Wo? Was? Hä?

Und wo kommen die tex_uv's hin? weder in die vertex noch indices passen die

Das sind vermutlich Texturkoodinaten. Die hast du pro Vertex. Wie die zugeordnet werden musst du sehen.

CloudBeta 
Beitragsersteller
 02.01.2023, 14:50
@Destranix

Es gibt ja bei dem cube 6 faces und auch 6 normals. Trotzdem komisch das es vn sind... UNd ja tex:uv sind ja textur coordinaten aber ich habe 8 vertices pos und viel viel mehr tex:uvs und weniger normals! Wo soll was hin?!

CloudBeta 
Beitragsersteller
 02.01.2023, 21:39
@Destranix

Ja... und? Erklärt immernoch nicht warum es 8 v und 6 vn gibt! In der website von dir sind auch 4 von allem drinn!

Destranix  03.01.2023, 10:40
@CloudBeta

Doch, erklärt es. Du hast acht Ecken und 6 Seiten.
Und diese werden dann für die Definition der 6 Faces verwendet unter Verwendung von Indices.

CloudBeta 
Beitragsersteller
 04.01.2023, 16:20
@Destranix

I aint reading allat! Ne aber im ernst ich kann keine 1000 Zeilen auf Englisch lesen... Und beim überfliegen finde ich nichts. Ich finde nur die deffinition von normals. Und warum heist es dann immernoch vn wenn es nichtmehr die vertex normals sind sondern die face normals? Und Wie soll man das umrechnen? An einem vertex sind 3 faces mit einem vector3 aber ein vertec kann nur 1 vn haben!

Destranix  06.01.2023, 10:22
@CloudBeta

Du brauchst dir ja nur die Definitionen der verwendeten Strukturen anschauen bzw. eigentlich auch nur den für Faces.

Die Normals werden hier auch jeweils für die Vertrices je Face angegeben. Du hast je Face vier Vertices mit jeweils eigener Position, Normal und Texture. Die Positionen sind allerdings identisch mit denen von Nachbarfaces.

CloudBeta 
Beitragsersteller
 21.02.2023, 19:23
@Destranix

Guten tag, ich glaube ich habe eine zu alte von glad ausversehen installiert! Und als ich ochmal eine neue runtergeladen habe gibt es nurnoch einen include und einen src ordner! Bei dem alten gab es so viel mehr! Ich habe jetzt mal versucht es wie eine normale header file zu bauen. Aber in glad.c selbst veröangt er nach <glad/glad.h> Also muss es ja irgendwie von cmake besonders bearbeitet werden oder so... Bitte Hilfe

CloudBeta 
Beitragsersteller
 21.02.2023, 19:33
@Destranix

Das ist die neuste version? Weil die jetztige war glaub 3.3

CloudBeta 
Beitragsersteller
 21.02.2023, 19:40
@Destranix

Also für gl 4.6 brauch ich.
Brauch so glCreateVertexArrays(1, uint);

Destranix  21.02.2023, 19:43
@CloudBeta

Das ist eine OpenGL-version. Die kommt nicht von GLAD, sondern vom installiertem OpenGL. Installiert wird das via Grafiktreiber iirc (die header bekommt man aber glaube ich auch online).

CloudBeta 
Beitragsersteller
 21.02.2023, 19:48
@Destranix

Aber ich habe glfw 3.3.8 und ich meinedie supportet bis zu openGL 4.6. Und die glad_ version exestiert auch nicht...

Destranix  21.02.2023, 19:51
@CloudBeta

Ich weiß nicht, welche glad-Version du für OpenGL 4.6 brauchst. Aber eine neuere als die neuste gibt es nicht.

Sprich, entweder schaust du, dass es mit der funktioniert, oder du behälst die alte OpenGL-Version oder du verwendest etwas anderes als glad.

Aber es wäre schon komisch, wenn das glad nicht für die neuste Version ausgelegt ist.

CloudBeta 
Beitragsersteller
 21.02.2023, 19:54
@Destranix

Ja. Aber genau da kriege ich ja nur die include und src folders...

Destranix  21.02.2023, 19:55
@CloudBeta

Na aber dass du das angeben kannst heißt doch, dass es unterstützt wird, darum geht es mir.

Also verstehe ich nicht, wo dein Problem liegt.

CloudBeta 
Beitragsersteller
 21.02.2023, 19:57
@Destranix

Also ich lad mir das jetzt von github runter, benenne das glad-glad2 in glad um und behalte die cmake list so wie sie ist?

CloudBeta 
Beitragsersteller
 21.02.2023, 20:04
@Destranix
glCreateVertexArrays auch mit glad_ exestieren immernoch nicht.(glfwExtensionSupported("GL_ARB_direct_state_access"))

ist aber true

Destranix  21.02.2023, 20:09
@CloudBeta

Das ist ja auch nichts, was mit glad zusammenhängt. Da fehlt entweder der passende Header oder die Funktion ist nicht implementiert (je nach Fehlermeldung).

CloudBeta 
Beitragsersteller
 21.02.2023, 20:11
@Destranix

Welche Fehlermeldung? Die funktion exestiert einfach nicht

Destranix  21.02.2023, 20:13
@CloudBeta

Woher willst du wissen, dass die Funktion nicht existiert, wenn du keinen Fehler erhälst?

CloudBeta 
Beitragsersteller
 21.02.2023, 20:15
@Destranix

Nunja halt
Use of undeclared identifier 'glCreateVertexArray'

Destranix  21.02.2023, 20:17
@CloudBeta

Heißt "glCreateVertexArrays". Und der Fehler heißt, dass der Header fehlt, der das deklariert.

CloudBeta 
Beitragsersteller
 21.02.2023, 20:18
@Destranix

Ja... und wo ist der? Mir zeigt esr an das er in dem ist, den ich generiert habe. Der nur mit hder und src foldern ist

Destranix  21.02.2023, 20:24
@CloudBeta

Ich weiß nicht, wo das definiert sein sollte. Musst du suchen und danns chauen, warum das nicht in dein Projekt includet wird.

Ich weiß gerade auch nicht, ob wir da irgendwelche Header ausgetauscht hatten.

Vor morgen beschäftige ich mich dmait auch jetzt nicht weiter.

CloudBeta 
Beitragsersteller
 21.02.2023, 20:24
@CloudBeta

Und da war ja meine frage wie ich das include

Destranix  21.02.2023, 20:24
@CloudBeta

Das sollte automatisch includet sein. Wenn deine OpenGL-Version aktuell ist.

CloudBeta 
Beitragsersteller
 21.02.2023, 20:29
@Destranix

Also die function ist jetzt in external/nglad/include/glad.h. Also nicht in openGL selbst bei mir und ich vermute ich kann es nicht einfach so includen wie einen normalen header...

CloudBeta 
Beitragsersteller
 21.02.2023, 20:47
@CloudBeta
Hier: Obwohl dashier der erste include ist#include "../external/nglad/include/glad/glad.h"

Sagt er mir trotzdem openGL wurde schon defined. Und das in genau der zeile (9)

Destranix  21.02.2023, 20:54
@CloudBeta

Das heißt dann, dass du es so nicht includen kannst. Evtl. hast du glad an der falschen Stelle includet oder so, das hatten wir doch schoneinmal, oder nicht?

CloudBeta 
Beitragsersteller
 21.02.2023, 21:09
@Destranix

Ja. Aber jetzt ist es halt an der ersten stelle. So wars mit dem glad vorher auch

Destranix  22.02.2023, 09:26
@CloudBeta

Dann musst du schauen, wo das schon einmal definiert wurde, das sollte dir der Compiler eigentlich auch mit ausgeben.

CloudBeta 
Beitragsersteller
 25.02.2023, 14:33
@Destranix

Das ist die einzige header file in die das included ist... Sorry für die später antwort

Destranix  25.02.2023, 14:41
@CloudBeta

Du musst nach der definition von "openGL" suchen, die ist irgendwo doppelt.

CloudBeta 
Beitragsersteller
 25.02.2023, 15:01
@Destranix

Ah! Ich hatte noch eine ganz auskommentierte klasse die anscheinend ein paar probleme gefordert hat! Jetzt kriege ich aber -1073741819 (0xC0000005) error... Ich musste auch den parameter aus gladLoadGL nehmen, weil es keine parameter mehr nimmt

CloudBeta 
Beitragsersteller
 25.02.2023, 15:03
@CloudBeta
Nur bei diesem code:int main() {
    glfwInit() ;

    glfw::setSTDWindowHints();

    Window window = glfw::setNewContext(screenSize.x, screenSize.y, "Hello World!", glfwGetPrimaryMonitor());
    

    glfw::deleteWindow(window);
    glfwTerminate();
}

void __glfw_deffi_ setSTDWindowHints() {
    setWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 4);
    setWindowHint(GLFW_CONTEXT_VERSION_MINOR, 6);
    setWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
}

void __glfw_deffi_ setCurrentContext(Window window) {
    glfwMakeContextCurrent(window);
    gladLoadGL();
    int width, height;
    glfwGetWindowSize(window, &width, &height);
    glViewport(0, 0, width, height);
}
CloudBeta 
Beitragsersteller
 25.02.2023, 15:20
@Destranix
Ja... der code den ich oben geschrieben habe klappt nicht. Dieser simple code:

int main() {
    glfwInit() ;

    glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 4);
    glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 6);
    glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);

    Window window = glfwCreateWindow(800, 800, "Hallo", 0, 0);
    glfwMakeContextCurrent(window);
    gladLoadGL();

    

    glfw::deleteWindow(window);
    glfwTerminate();
}
CloudBeta 
Beitragsersteller
 25.02.2023, 15:22
@Destranix
Fehler: -1073741819 (0xC0000005) includes 

#include "../external/nglad/include/glad/glad.h"
#include <functional>
#include <GLFW/glfw3.h>
#include "list.h"
#include <glm/glm.hpp>
#include <glm/gtc/type_ptr.hpp>
#include <thread>
#include <chrono>
#include <cstdint>
Destranix  25.02.2023, 15:29
@CloudBeta

Ich weiß nicht, was der fehler bedeutet. certutil sagt:

Text der Fehlermeldung: Die Anweisung in 0x%08lx verweist auf Speicher 0x%08lx.
Der Vorgang %s konnte nicht im Speicher durchgeführt werden.

Das muss aber nichts heißen.

Schau erst einmal, welches Command das problem verursacht: Dann schau, ob du, wie auf StackOverflow geraten, irgendeinen Context erst laden musst oder soetwas.

Ich kenne mich mit GLAD nicht aus, da kann ich dir nicht wirklich helfen.

CloudBeta 
Beitragsersteller
 25.02.2023, 15:41
@Destranix
Ich habe jetzt die methode gladLoadGLLoader((GLADloadproc)glfwGetProcAddress);

Wie in learnopengl.com verwendet. Die funktion ist undefined
FAILED: GLTest.exe 

cmd.exe /C "cd . && C:\msys64\ucrt64\bin\c++.exe -g CMakeFiles/GLTest.dir/main.cpp.obj CMakeFiles/GLTest.dir/sources/types.cpp.obj CMakeFiles/GLTest.dir/sources/stb_image.cpp.obj CMakeFiles/GLTest.dir/sources/glfwUtils.cpp.obj CMakeFiles/GLTest.dir/sources/console.cpp.obj CMakeFiles/GLTest.dir/sources/shader.cpp.obj CMakeFiles/GLTest.dir/sources/file.cpp.obj CMakeFiles/GLTest.dir/sources/gameUtils.cpp.obj -o GLTest.exe -Wl,--out-implib,libGLTest.dll.a -Wl,--major-image-version,0,--minor-image-version,0 libglad_gl_core_33.lib external/glfw-3.3.8/src/libglfw3.lib -lopengl32 -lglu32 -lkernel32 -luser32 -lgdi32 -lwinspool -lshell32 -lole32 -loleaut32 -luuid -lcomdlg32 -ladvapi32 && cd ."

C:/msys64/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/12.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: CMakeFiles/GLTest.dir/main.cpp.obj: in function `main':

C:/Users/alpha/Desktop/GLTest/main.cpp:178: undefined reference to `gladLoadGLLoader'

collect2.exe: error: ld returned 1 exit status

Destranix  25.02.2023, 15:46
@CloudBeta

Na wenn es die nicht gubt, dann gibt es sie nicht. Dann fehlt entweder der entsprechende header oder du musst etwas anderes tun. Wie gesagt, ich kenne mich nicht aus und habe gerade anderes zu tun. Musst du etwas rumprobieren, googeln und Documentation lesen.

CloudBeta 
Beitragsersteller
 25.02.2023, 16:19
@Destranix

Ah! Ich musste noch die glad.c zu meiner CMakeLists hinzufügen... Und dann musste ich noch in glad.c den include von der glad.h den pfand ändern.
Danke für deine hilfe jetzt geht wieder alles!

CloudBeta 
Beitragsersteller
 26.05.2023, 17:39
@Destranix

Egal was ich mache ich schaff es einfach nicht selber eine library einzubinden 😂! Ich würde gerne assimp verwenden weil mir das alles mit den accessorn und bufferViews zu kompliziert ist... Da es immer ein paar minuten dauert das projekt dann zu bauen, wenn ich sie normal einbinde habe ich versucht die lib zu installieren. Aber er gibt mir immer undeined errors zu den assimp funktionen die ich verwende! Vielleicht habe ich auch schon mein vcpkg kaputt gemacht und darum funktionieren die neusten versuche nicht 😂. Aber ich habe den ordner gelöscht und es neu von git geclont wie es in der anleitung von assimp steht: https://github.com/assimp/assimp/blob/master/Build.md . Ich habe aucvh das in der cmake list hinzugefügt was am ende von der installation m cmd steht: find_package(assimp CONFIG REQUIRED)

  target_link_libraries(main PRIVATE assimp::assimp)
Und ich habe bei den CMake options auch das hinzugefügt was im cmd stand:
"-DCMAKE_TOOLCHAIN_FILE=C:/Users/alpha/vcpkg/scripts/buildsystems/vcpkg.cmake"
Also ich verstehe echt das problem bei mir nicht...
Ich versuche es schonwieder seit 5 tagen einen modelimporter ranzukriegen

Destranix  26.05.2023, 17:44
@CloudBeta

Ist doch dasslebe wie sonst auch. Musst du halt schauen, wo es hakt. Findet er Assimp gar nicht? (Was setzt denn der Find-File für Assimp) oder machst du sonst etwas falsch.

Er muss ja einen File FindAssimp.cmake oder so (gibt auch files für cmake die anders heißen) haben, sonst würde CMake meckern. Finde den und schau, was der tut und dann debug den mit message-Aufrufen um herauszufinden, was du falsch machst.

Vermutlich musst du nur eine Variable im PATH passend setzen.

CloudBeta 
Beitragsersteller
 26.05.2023, 18:00
@Destranix

Hm... ich verstehe das ganze zeug immernoch nicht weil ich mich damit eigendlich nicht beschäftige. Also ja, es gibt eine file mit diesem namen in:

C:\Users\alpha\vcpkg\buildtrees\assimp\src\v5.2.5-5480fca19f.clean\cmake-modules

jetzt habe ich in dem else(WIN32) block vor dem hier:

if (assimp_INCLUDE_DIRS AND assimp_LIBRARIES)

 SET(assimp_FOUND TRUE)

Dann das geschrieben:

message("Includes includedirs")

message(assimp_INCLUDE_DIRS)

meesage(assimp_LIBRARIES)

aber es kommt kein output weil ich wahrscheinlich die locale cmakelists.txt console offen habe aber da nicht der output von der cmake list gezeigt wird oder?

Destranix  26.05.2023, 18:07
@CloudBeta

Naja, Lass dir doch mal ein "TEST" irgendwo unbedingt ausgeben, am besten da und einmal ind einer CMakeList. Und auch einmal "assim_FOUND" in deiner CMakeList. Dann siehst du ja, ob die Aushgabe geht und ob assimp gefunden wurde.

CloudBeta 
Beitragsersteller
 26.05.2023, 18:24
@Destranix

Mir fiel grade auf das die message statments die ich in Findassimp geschrieben ahbe falsch war aber es hat keinen error gegeben! Trotzdem hab ich das jetzt mal correct in meine geschrieben:

message(WARNING "Includes includedirs")

if(assimp_INCLUDE_DIRS)

message(WARNING "includesdirs")

endif(assimp_INCLUDE_DIRS)

if(assimp_LIBRARIES)

message(WARNING "includeslibs")

endif(assimp_LIBRARIES)

Aber der outoput sit nur:

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

 Includes includedirs

Also wurde assimp wohl nicht gefunden richtig?

Und jetzt? Keine Ahnung 😂

Destranix  26.05.2023, 18:27
@CloudBeta

Vermutlich. Dann schau mal, wo die Variablen definiert sein müssten. So, wie die klingen sind das keine Umgebungsvariablen, sondern da irst irgendein anderer File, der evtl. includet wird oder in der näheren Umgebung leigt, der die Variablen definieren sollte.

Beispielsweise

assimp-config.cmake

CloudBeta 
Beitragsersteller
 26.05.2023, 18:39
@Destranix
  1. Warum hab wieder nur ich das problem? 2. Der path ist komisch: C:\Users\alpha\vcpkg\buildtrees\assimp\src\v5.2.5-5480fca19f.clean\cmake-modules

3.Es gibt 12 cmake files. Soll ich alle durchschauen und wenn ja nach was genau oder bin ich komplett im falschen dir

Destranix  26.05.2023, 18:43
@CloudBeta

1.) Weil du dich nicht auskennst und deshalb Zeug kompliziert machst. Was aber auch daran liegt das Zeug kompliziert ist teilweise, nicht nur du hast das Problem.

2.) Wei du vcpkg nutzt? Keinen Plan, was das tut, aber offenbar tut es nicht das, was es soll.

3.) Du sollst halt nach Dingen mit assimp suchen und schauen, wo die Libs gesucht werden und so.

Du kannst evtl. auch schauen, wo die tatsächlich leigen und ob eine Environment variable gesetzt wurde oder soetwas.

CloudBeta 
Beitragsersteller
 26.05.2023, 18:47
@Destranix Also ich kann es ja auch anders installieren wenn es geht... Aber die anderen möglichkeiten verstehe ich nicht. Ich bin nicht auf on Ubuntufalls das ein betriebssystem ist. Und pyassimp

ist irgendwas für python oder so denke ich mal...

Und ich weiß nicht wie etwas aussieht, das nach irgendwelchen libs sucht. :(

Destranix  26.05.2023, 18:59
@CloudBeta

assimp.lib oder assimp.dll

Unjd die Include-Files. Müssen irgendwo in einem Ordner liegen und du musst irgendwie den Ordner passend in deinen CMakeFile bekommen, wahrscheinlich indem du eine Environment-Variable passend setzt oder den ort wo die Dateien liegen zu deinem Pfad hinzufügst oder so.

Destranix  26.05.2023, 19:20
@CloudBeta

Warum baust du dir Assimp eigentlich nicht auch selber? Das wäre doch eigentlich am einfachsten, dann sparst du dir das Package-Chaos.

So, wie du die anderen Libs halt auch eingefügt hast.

CloudBeta 
Beitragsersteller
 28.05.2023, 19:59
@Destranix

Mit add_subdirectory habe ich ja schon gemeint, das es dann mehrere minuten baut! Immer wenn ich das projekt baue. Außerdem bin ich grade nicht zuhause also sorry für die späte antwort

Destranix  28.05.2023, 20:01
@CloudBeta

Dann bau die Library als Sharded, dann geht es evtl. schneller.

(Denn die Library selbst sollte er ja nur einmal bauen, außer dei Files werden gelöscht oder soetwas.)

CloudBeta 
Beitragsersteller
 28.05.2023, 20:53
@Destranix

Habe ich glaub ich früher auch schonmal versucht aber war vermutlich falsch weil es das gleiche gemacht hat.

Destranix  28.05.2023, 20:56
@CloudBeta

Du müsstest schauen, was genau es da baut. Und dann schauen, warum es das erneut baut, obwohl es das doch schon gebaut hat.

Destranix  29.05.2023, 07:59
@CloudBeta

Jedes Mal? Klingt für mich komisch. Schau mal, was mit den gebauten Files passiert, ob die irgendwie verschwinden oder so. Vielleicht macht CLion da auch Mist.

CloudBeta 
Beitragsersteller
 05.06.2023, 19:12
@Destranix

Viele klausuren grade... Aber jetzt ist es vorbei! Also... Grade habe ich es denke ich wieder als static library eingebunden da ich damals mal assimo mir angeschaut ahbe aber es dann einfach gelassen habe. Jetzt krieg ich das includen nichtmal mehr hin xD! Einfach nur

add_subdirectory(external/assimp) geht nichtmehr hm... Auch wenn ich die target_link_library umänder zu: target_link_libraries(${PROJECT_NAME} PRIVATE glad_gl_core_33 ${GLFW3_LIBRARY} glfw ${OPENGL_LIBRARIES} assimp) geht es nicht

CloudBeta 
Beitragsersteller
 05.06.2023, 19:18
@CloudBeta

Ah! Hab immernoch das für die installation im ordner gehabt oder so. Habs neu geclont und jetzt baut es. Dauert halt noch... Diese meldungen und so:

[23/406] Building CXX object external/assimp/code/CMakeFiles/assimp.dir/AssetLib/3DS/3DSConverter.cpp.obj

[24/406] Building CXX object external/assimp/code/CMakeFiles/assimp.dir/AssetLib/AMF/AMFImporter_Geometry.cpp.obj

Destranix  05.06.2023, 19:22
@CloudBeta

Ja, das sollte an sich, wenn es einmal gebaut ist, halt nicht noch einmal alles bauen, außer die Zwischendateien werden irgendwie gelöscht oder so. Das müsstest du dann untersuchen.

CloudBeta 
Beitragsersteller
 05.06.2023, 19:23
@Destranix

Mal sehen. Es baut noch. Aber wird es denn dann trotzdem jedes mal neu gebaut wenn ich die cmake-build-debug dir lösche?

Destranix  05.06.2023, 19:24
@CloudBeta

Wenn da die Zwischendateien drinnenliegen dann ja. Oder vielleicht auch in anderen Fällen wenn cmake Zeug falsch macht oder das Zeug falsch konfiguriert ist.

CloudBeta 
Beitragsersteller
 05.06.2023, 19:39
@Destranix

Gutefrage geht grade auf chrome nicht... musste in den tor browser. Hier die nachricht die ich senden wollte:

Ahhh okay. Weil ich muss den immer löschen damit mein assets ordner mit kopiert wird und ich die assets benutzen kann! Wie soll ich das anders machen? Grad hab ich es so:

file(COPY ${ASSETS_SOURCE_DIR} DESTINATION ${CMAKE_CURRENT_BINARY_DIR})

Wenn ich das nicht mache kann ich den ordner nicht mit relativem path benutzen.

Destranix  05.06.2023, 19:42
@CloudBeta

Probier mal soetwas wie:

install(DIRECTORY
      ${CMAKE_CURRENT_LIST_DIR}/scenes DESTINATION ${CMAKE_INSTALL_BINDIR}
   )

(Ist jetzt aus einem anderem Project. Das kopiert den Subordner "scenes" in das Binary-Directory am Install-Ort.)

Das wird zumindest bei mir immer aufgerufen wenn ich einen entsprechenden File verändere.

CloudBeta 
Beitragsersteller
 05.06.2023, 19:53
@Destranix

Vielleicht muss ich pfade setzten? Habe meine code jetzt einfach durch: install(DIRECTORY

${CMAKE_CURRENT_LIST_DIR}/assets DESTINATION ${CMAKE_INSTALL_BINDIR}

)

ersetzt.

Kriegen aber "Texture is null" Das wird ausgegeben wenn:

localBuffer = stbi_load(pathName.c_str(), &width, &height, &bitsPerPixel, 4);

if (!localBuffer)

printErr("Texture is null");

Und sie assets folder gibt es auch nicht im cmake-build-debug

Destranix  05.06.2023, 19:56
@CloudBeta

Klar musst du Pfade ersetzen. Du packst das Zeug ja jetzt in einen anderen Ordner.

Wohlgemerkt musst du das Projekt auch installieren. Also

cmake install

oder so.

CloudBeta 
Beitragsersteller
 05.06.2023, 20:00
@Destranix

keine ahnung... 😂 Ein projekt installieren? Wie mache ich das und zu was muss ich die paths setzen? Maan alles so kompliziert

Destranix  05.06.2023, 20:02
@CloudBeta

Lies dich dazu am besten im Internet schlau. Das macht deine IDE vielleicht sogar schon. Da kannst du mal schauen, ob du einen install-Ordner oder so findest.

Wenn du im Internet nichts findest kann ich dir morgen einen befehl schicken, wie man das macht.

CloudBeta 
Beitragsersteller
 05.06.2023, 20:05
@Destranix

Finde nichts wenn ich "how to install my c++ project" suche... Nur wie man es builded oder c++ an sich installiert. CLion erstellt nur eine "cmake-build-debug". Da ist auch nichts was irgendwie install heißt drinne.

CloudBeta 
Beitragsersteller
 05.06.2023, 21:28
@Destranix

Ist das jetzt alles nur damit der assets ordner funktioniert? xD Ich versteh wenn es darum geht irgendwie immer nur Bahnhof. Ich habe das so verstanden das CMake, nunja und make alles Build-systeme sind aber CLion alle gleichzetig benutzt?!

CloudBeta 
Beitragsersteller
 05.06.2023, 22:59
@CloudBeta

Naja hab es jetzt: function(copy_assets)

file(COPY ${ASSETS_SOURCE_DIR} DESTINATION ${CMAKE_CURRENT_BINARY_DIR})

endfunction()
copyassets()

und es klappt bei dem test

Destranix  06.06.2023, 07:43
@CloudBeta

Das installieren packt alle wichtigen Dateien in einen neuen Ordner. Also beispielsweise die fertige Executable, die fertigen Libraries, Assets, ...

Ich habe das so verstanden das CMake, nunja und make alles Build-systeme sind aber CLion alle gleichzetig benutzt?!

CLion sollte nur eines davon verwenden, sonst gibt es nur unnötig Chaos.

und es klappt bei dem test

Na hoffentlich bleibt das auch so, das ist wirklich ser hacky. Ich meine, das sollte ja eigentlich gleich funktionieren, egal ob jetzt in einer Funktion oder nicht.