Hallo,
ich mache gerade meine ersten Schritte in KDevelop (Die Grundlagen von c++ sowie das Compilieren einfacher Projekte in der Konsole sind mir bekannt). Ich habe ein einfaches Testprojekt angefangen welches aus 3 Dateien besteht (main.cpp, cnum.cpp und cnum.h). Die main.cpp wurde von KDevelop automatisch generiert. Die Dateien main.cpp und .h habe ich über "create from template" eingefügt.
Wenn ich nun das Projekt erstellen möchte kommt die Fehlermeldung:
/home/USER/projects/cpplx/main.cpp:8: undefined reference to `cnum::cnum(double, double)'
Dies ist aber in cnum.cpp eindeutig definiert. Anscheinend erkennt er nichts was in cnum.cpp definiert wird.
wenn ich in mein Projektverzeichnis gehe und manuell folgenden Befehl ausführe:
g++ main.cpp cnum.cpp -o test
wird das Programm richtig erstellt und es funktioniert.
Ein Blick in die CMakeLists.txt zeigt auch, dass cnum.cpp nirgends eingebunden wird. Es sieht genauso aus wie vor dem Erstellen der neuen Klasse.
Wenn ich die CMakeLists.txt manuell editiere, z.B. von so:
add_executable(cpplx main.cpp)
nach so:
add_executable(cpplx main.cpp cnum.cpp)
Klappt das erstellen auch ohne Fehlermeldung.
Habe ich beim einfügen der neuen Klasse irgendwas falsch gemacht, dass diese nicht automatisch in die CMakeLists.txt eingefügt wird? Oder muss ich irgendwo noch eine Einstellung vornehmen damit dies geschieht?
Ich kann mir kaum vorstellen dass dieses Verhalten so gewollt ist.
Danke fürs Lesen und jede Hilfe!