C Lib mit qmake einbinden [Erledigt]
-
Hallo,
ich versuche gerade die C-Lib libdmtx einzubinden, in dem ich einfach in einer pri-Datei die Sourcen angebe:
INCLUDEPATH += $$PWD HEADERS += \ $$PWD/dmtxstatic.h \ $$PWD/dmtx.h SOURCES += \ $$PWD/dmtxencode.c \ $$PWD/dmtxencodestream.c \ $$PWD/dmtxencodescheme.c \ $$PWD/dmtxencodeoptimize.c \ $$PWD/dmtxencodeascii.c \ $$PWD/dmtxencodec40textx12.c \ $$PWD/dmtxencodeedifact.c \ $$PWD/dmtxencodebase256.c \ $$PWD/dmtxdecode.c \ $$PWD/dmtxdecodescheme.c \ $$PWD/dmtxmessage.c \ $$PWD/dmtxregion.c \ $$PWD/dmtxsymbol.c \ $$PWD/dmtxplacemod.c \ $$PWD/dmtxreedsol.c \ $$PWD/dmtxscangrid.c \ $$PWD/dmtximage.c \ $$PWD/dmtxbytelist.c \ $$PWD/dmtxtime.c \ $$PWD/dmtxvector2.c \ $$PWD/dmtxmatrix3.c
Das kompiliert allerdings nicht, weil fast jede C-Datei Typen oder Makros verwendet, die entweder in Headern definiert sind oder sogar direkt in anderen C-Dateien, wofür keine Header existieren! Die Sache ist die: Keine einzige C-Datei hat ein include! Das wird wohl alles über das Linken gefixt. Da meine Makefile-Kenntnisse nicht gerade gut sind, ist die Frage, wie ich das Problem am elegantesten löse.
Danke im Voraus!
Steffo
-
Das geschieht wohl über "precompiled headers". Für Qt s. Using Precompiled Headers, also:
PRECOMPILED_HEADER = \ $$PWD/dmtxstatic.h \ $$PWD/dmtx.h
(oder nur
$$PWD/dmtx.h
)
-
Die Library verwendet einen sog. "unity build", d.h. es wird nur ein .c File kompiliert (nämlich
dmtx.c
) welches alle anderen .c Files inkludiert -- und davor die nötigen Headers.Du versuchst dagegen alle .c Files einzeln zu bauen. Darauf ist die Library nicht ausgelegt und daher geht das auch nicht.
-
Danke, das werde ich mir mal anschauen!
Viele Grüße,
Steffo
-
Hat geklappt, danke!