Forum
Tipps
News
Menu-Icon

Suse: Suse und C++: Die Sonderbaren Include-Verzeichnisse von FLTK

Hallo Zusammen :)

dreist eröffne ich mal einen neuen Thread, obwohl es schon einen Makefile-Katastrophen-Thread gibt, doch das ursprüngliche Problem ist gelöst.

Die Form des unten gelisteten Makefiles mag nicht schön sein, ich lerne gerade, doch es funktioniert mit Qt.

FLTK hat wenigstens eine Besonderheit auf meinem Suse 10.2, nämlich 2 Verzeichnisse, in denen alle Header doppelt zu sein scheinen.

Die in meinen Channels verfügbaren Versionen sind:

r66@linux:~/Projects/xwpe/versuch_1> smart info fltk-devel

Name: fltk-devel
Version: 1.1.7-23@i586
Installierte Größe: 4.0MB
Channel: Suse 10.2 inst-source

Name: fltk-devel
Version: 1.1.7-42.pm.1@i586
Installierte Größe: 6.0MB
Channel: Packman 3rd Party Package Repository

Installiert habe ich fltk und fltk-devel von Packman.

Und hier das Problem, das die Header wohl nicht gefunden werden können:

r66@linux:~/Projects/xwpe/versuch_1> ls
makefile-fltk  makefile-qt  versuch_1.cpp  versuch-fltk.cpp
r66@linux:~/Projects/xwpe/versuch_1> make -f makefile-fltk
make: *** Keine Regel vorhanden, um das Target »/usr/X11R6/include/FL/FL_Window.H«,
  benötigt von »versuch-fltk.o«, zu erstellen.  Schluss.
r66@linux:~/Projects/xwpe/versuch_1> cat makefile-fltk
### Makefile für qt und fltk ###
### Version makefile-fltk   ###

### Compiler ###
# Qt #
# CC = g++
# FLTK #
# > fltk-config --help
# [...] [--cxxflags]      return flags to compile C++ using FLTK [...]
# > fltk-config --cxxflags
# -I/usr/X11R6/include -O2 -g -m32 -march=i586 -mtune=i686 -fmessage-length=0 -D_FORTIFY_SOURCE=2
CC = g++ -I/usr/X11R6/include -O2 -g -m32 -march=i586 -mtune=i686 -fmessage-length=0 -D_FORTIFY_SOURCE=2

### Config Suse 10.2 ###
X11R6_LIB       = /usr/X11R6/lib
LIBDIR          = /usr/lib
LIBS                    = -lm -lqt-mt -lXext -lX11 -lfltk
# Qt #
# SOURCE        = versuch_1.cpp
# OBJECT        = versuch_1.o
# TARGET        = versuch_1
# QTDIR         = /usr/lib/qt3
# QTDIR_INC     = $(QTDIR)/include
# QTHEADERS     = $(QTDIR_INC)/qapplication.h $(QTDIR_INC)/qmainwindow.h
# QTDIR_LIB     = $(QTDIR)/lib
# FLTK #
SOURCE          = versuch-fltk.cpp
OBJECT          = versuch-fltk.o
TARGET          = versuch-fltk
FLDIR_INC       = /usr/X11R6/include/FL
                        # /usr/X11R6/include/Fl
FLHEADERS       = $(FLDIR_INC)/FL_Window.H $(FLDIR_INC)/FL_Box.H
        # http://www.fltk.org/doc-1.1/basics.html#3_1
        #                                                Suse 10.2
        #                                               |/usr/X11R6/include/FL          |/usr/X11R6/include/Fl
        # -------------------------------------------------------------------------------------------------------------------
        # include <FL/Fl.H>                     |NO                                             |NO
        # include <FL/Fl_Window.H>      |Fl_Window.h & Fl_Window.H      |Fl_Window.h & Fl_Window.H
        # include <FL/Fl_Box.H>         |Fl_Box.h            & Fl_Box.H         |Fl_Box.h            & Fl_Box.H
        # -------------------------------------------------------------------------------------------------------------------
        # libfltk       /usr/lib: NO    /lib: NO        /usr/X11R6/lib: YES

### Qt ###
# $(TARGET): $(OBJECT)
#       $(CC) -I$(QTDIR_INC) -L$(QTDIR_LIB) -L$(LIBDIR) -L$(X11R6DIR_LIB) $(LIBS) -o $(TARGET) $(OBJECT)

### FLTK ###
$(TARGET): $(OBJECT)
        $(CC) -I$(FLDIR_INC) -L$(LIBDIR) -L$(X11R6DIR_LIB) $(LIBS) -o $(TARGET) $(OBJECT)

### Qt ###
# $(OBJECT): $(SOURCE) $(QTHEADERS)
#       $(CC) -I$(QTDIR_INC) -c $(SOURCE)

### FLTK ###
$(OBJECT): $(SOURCE) $(FLHEADERS)
        $(CC) -I$(FLDIR_INC) -c $(SOURCE)

Tippfehler will ich nicht ausschließen, als Legastheniker - Wahrnehmungsstörung bei der Zeichenerkennung - kann ich z.B. ein großes i von einem kleinen L nicht immer unterscheiden und einen angenehmen Zeichensatz mit fester Breite finde ich einfach nicht, doch den Fehler vermute ich woanders.

Weiß jemand etwas über die misteriösen Verzeichnisse der FLTK Libraries? <- PS: Manchmal kann ich auch ein y nicht von einem i unterscheiden ;D

Grüße
Ralf
« Letzte Änderung: 18.08.07, 15:58:53 von KAsper.ger »

Antworten zu Suse: Suse und C++: Die Sonderbaren Include-Verzeichnisse von FLTK:

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Hallo,

wenn Du Probleme mit den Zeichen hast, installiere mal ein paar Fontpakete. Als KDE Anwender siehst Du anschiessend nach, ob Antialiasing und Subpixelhintig aktiv ist in :  Erscheinungsbild->Schriften im KDE Kontrollzentrum ( Persönliche Einstellungen ). Hier kannst Du auch Schriftgrösse und Typen einstellen.

Have Fun

Die Kurzversion:

Danke an Lisaa und Dr.Suse, den aus meiner Sicht umständlichen Einstieg habe ich, mit der Hilfe eines Freundes und Eurer jetzt wahrscheinlich hinter mich bringen können.

Auf FLTK verzichte ich erstmal, wenn auch eher unfreiwillig.

Nach einem geeigneten Font werde ich sicher auch ohne Hilfe Ausschau halten können.

Und mit Postings zur Programmierung versuche ich mich vorerst auch einzuschränken, wenn ich so weit sein sollte, entsprechende Mailing-Listen aufsuchen.

Es könnte allerdings Fragen zu IDEs und Editoren hageln.

Es ist somit alles mitgeteilt, meine ursprüngliche Rückantwort war etwas überausführlich, das will auch erstmal gelernt sein vernünftig zu posten, also die wichtigen Infos prägnant ohne abzuschweifen weitergeben zu können, um das mit den Schriften nochmal verständlich zu machen, hänge ich diese dennoch an.

Danke :)

das hätte ich genauer formulieren müssen, abgesehen von einem Schriftproblem bei Gtk-Anwendungen zusammen mit dem Suse-KDE, z.Z. habe ich generell ein Design-Problem mit Gtk-Programmen, das ich aber nichtmehr versuchen werde zu reparieren, da ich zu Suse 10.3 in einigen Monaten wechseln werde, sind die Schriften in den Editoren, egal ob Qt oder Gtk völlig in Ordnung, nur unter den vielen Fonts die ich habe, finde ich schwer die Schriften mit fester Breite. Es geht nur darum, das ich einen Schrifttyp finde, bei dem die Zeichen alle gleich breit und die Abstände auch immer identisch sind, der meinen Sehgewohnheiten entspricht. Zur Zeit benutze ich Efond Fixed Wide, was für mich okay ist, doch wenn ich Quelltexte tauschen will oder nur als Code hier posten möchte, führt das zu unschönen Formatierungen und zugegeben, mein i-L-Problem könnte ich mit Serifen-Schriften umgehen unter denen es auch welche gibt, die kein O-Null-Problem haben, ich bevorzuge aber serifenlose, wie Helvetica, die aber eben keine feste Breite mitbringen.

Auf FLTK werde ich erstmal verzichten, ich will schnell C/ C++ lernen um Linux-Dokus verstehen zu können, dann aber doch in Assembler programmieren, beim lesen gestern bekam ich Aufstoßen, statt zum setzen und löschen von Bitflags einfache, logische Verknüpfungen mit Integerwerten oder simplen Kommandos vor zu nehmen, erklärt meine Literatur über Seiten den Umgang mit Bitfeldern und natürlich füllen Erklärungen zu Arrays mit Zeigern und den Überlaufproblemen für sich alleine schon ganze Bücher.

Für die Programmierung einer GUI sind Hochsprachen sehr gut, da würde ich mir aus gewohnheit Basic wünschen, doch C/ C++ ist auch okay, für Datenbanken, Expertensysteme oder allgemeine Mustererkennungen wird es, wenn man nicht gerade eine völlig neue Herangehensweise entwickeln will bestimmt spezialisierte Hochsprachen geben, früher gab es z.B. Clipper und Prolog, resp. gibts heute ja auch für viele Anwendungen so genannte Auszeichnungssprachen wie HTML und für mathematisches sollte man für jede Sprache fertige Algorithmen bekommen können.

Ich will es aber kurz, schnell und einfach, muss auf Ports der MIDI-Interfaces zugreifen können und die Verwaltung von Synthesizer Daten-Bänken erfordert keine für Lagerverwaltungsprogramme, künstliche Intelligenz oder gar die Simulation biologischer Intelligenz praktische Funktionen, die dafür aber umständlich vor Überläufen bewahrt werden müssen, bei Sequenzersegmenten nehme ich an, kann es unter Linux grenzwertig werden.

Ich werde wohl, sobald ich einen Laptop für jemanden repariert habe, den ich bisher nicht öffnen konnte :S - hier hat nicht zufällig mal jemand einen Toshiba 1900-102 so geöffnet, das man die Netzteilbuchse neu verlöten konnte? -, einfach mal experimentieren und hier eher selten Fragen dazu posten, obwohl mich FLTK natürlich als Vergleich zu Qt gereizt hätte.

Sonnigen Sonntag
Ralf

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Falls es dich noch interessiert: Guck doch einfach mal nach, ob es die Headerdateien so in dem angegeben Verzeichnis gibt. IIRC haben die mindestens ein kleines "l" (el), vielleicht auch ein kleines "h" hinten, die Schreinweise im Makefile muss natuerlich genau passen!

Hi Lisaa :)

es interessiert mich noch am Rande, allerdings hatte ich so viel um die Ohren, das ich bis heute noch nicht über "Hallo Welt" hinaus kommen konnte, was sich heute ändern soll, daher bleibe ich bei C++ mit Qt und Assembler, sollte sich mein Problem mit FLTK nebenbei aufklären, so währe dies natürlich schön.

Ich versuche meine Liste mal mit Bitstream Terminal leserlicher zu formatieren, dort ist zu sehen, welche Files wo sind und welches es nicht gibt.

        # http://www.fltk.org/doc-1.1/basics.html#3_1
        #                          Suse 10.2
        #                         |/usr/X11R6/include/FL          |/usr/X11R6/include/Fl
        # -------------------------------------------------------------------------------------------------------------------
        # include <FL/Fl.H>       |NO                             |NO
        # include <FL/Fl_Window.H>|Fl_Window.h & Fl_Window.H      |Fl_Window.h & Fl_Window.H
        # include <FL/Fl_Box.H>   |Fl_Box.h    & Fl_Box           |Fl_Box.h & Fl_Box.H
        # -------------------------------------------------------------------------------------------------------------------
        # libfltk       /usr/lib: NO    /lib: NO        /usr/X11R6/lib: YES

Gruß
Ralf

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Ja, das war mir klar, aber hier

FLHEADERS = $(FLDIR_INC)/FL_Window.H $(FLDIR_INC)/FL_Box.H
hast du die Header mit großem 'L' geschrieben, und genau die findet er laut Fehlermeldung nicht. Was ja auch nicht weiter verwunderlich ist, da es sie nicht gibt.

Juhu :)

Lisaa is the best.

Du hast es richtig erkannt, zudem gab es noch einen Fehler.

### Qt ###
# $(TARGET): $(OBJECT)
#    $(CC) -I$(QTDIR_INC) -L$(QTDIR_LIB) -L$(LIBDIR) -L$(X11R6DIR_LIB) $(LIBS) -o $(TARGET) $(OBJECT)

### FLTK ###
$(TARGET): $(OBJECT)
    $(CC) -I$(FLDIR_INC) -L$(LIBDIR) -L$(X11R6_LIB) $(LIBS) -o $(TARGET) $(OBJECT)

Und zwar habe ich ein Makro falsch benannt: X11R6_LIB    = /usr/X11R6/lib, das nannte ich zuerst wie in der Qt-Version statt X11R6_LIB im Linkeraufruf X11R6DIR_LIB, das Qt dennoch funktioniert dürfte daran liegen, das die Libs für Qt für ein Huhu-Welt-Programm mit einem Qt-Fenster noch nicht benötigt werden, es funktioniert natürlich auch, wenn ich -L$(X11R6DIR_LIB) im Qt Compileraufruf für den Link ganz weg lasse, FLTK hingegen wird wohl aus dem Archiv libfltk.a das Objektfile Fl.o benutzen, was wiederum erklärt, warum es keine Fl.H gibt.

Wahrscheinlich werde ich frühstens morgen über die Grüße an die Welt hinauskommen, dafür aber nach belieben mit einer Qt- oder FLTK-GUI.

Vielen Dank
Ralf


« Suse: Newbi braucht hilfeSuse: kriege flight gear nicht gestartet »
 

Schnelle Hilfe: Hier nach ähnlichen Fragen und passenden Tipps suchen!

Fremdwörter? Erklärungen im Lexikon!
Formatieren
  Das Formatieren einer Festplatte, HDD oder SSD bereitet das Laufwerk auf neue Daten vor. Dazu werden sämtliche alten Daten gelöscht, damit die...

Header
Die ersten Byte einer Datei werden als Kopf oder Header bezeichnet. Dort befinden sich Informationen zum Datentyp oder der Größe der Datei. Siehe auch Byte....

Quellcode
Ein Quellcode, auch als Quelltext bekannt, bezeichnet den unkompilierten Programm-Code einer Software. Quell- oder Programm-Code ist der auch für Menschen lesbare Co...