einbinden externer header in ein projekt

Alles zur Entwicklung von KDE - Anwendungen
Antworten
slash-ex
Beiträge: 239
Registriert: 30. März 2005 21:40

einbinden externer header in ein projekt

Beitrag von slash-ex »

ich wollte ein paar funktionen aus der smartdimmer.h nutzen, aber wenn ich so eine funktion aufrufe bekomme ich beim linken immer eine fehlermeldung das eine referenz nicht definiert ist, obwohl sie es ist ): könnte mir jemand zeigen, wie ich die header einbinden muss?

die externen datein sind im src/include ordner.
http://rapidshare.com/files/46988434/kp ... 7.2.tar.gz
-=Freaky=-
Beiträge: 503
Registriert: 29. Dezember 2006 22:54
Wohnort: HL

Beitrag von -=Freaky=- »

eigentlich die zugehoerigen dateien (bei einer klasse meist <klasse>h und <klasse>.cpp) im project file hinzufuegen

Code: Alles auswählen

#ohne '<'/'>'
HEADERS += <dateiname>.h
SOURCES += <dateiname>.cpp
... sofern die headerdetei auf ".h" und die implementierungsdatei auf ".cpp" endet.

dann eben in deinem code wo du es brauchst

Code: Alles auswählen

#include "<dateiname>.h"
mfg,
julian[/code]
slash-ex
Beiträge: 239
Registriert: 30. März 2005 21:40

Beitrag von slash-ex »

hmm, das ist etwas komplizierter. die funktionen in der smartdimmer.h greifen auf die nvclock-funktionen zu (im ordner backend)
und wenn ich smartdimmer einfach hinzufüge, bekomme ich meldungen wegen nicht aufgelöster referenzen. als ich mal geschaut habe, wie man das beim smartdimmer gemacht hat, habe ich gesehen, dass der ne libbackend aus den backend-dateien erzeugt und die dazulinkt:

Code: Alles auswählen

CC=@CC@
INSTALL=@INSTALL@

SOURCES=smartdimmer.c
SUBDIRS=backend
libbackend=./backend/libbackend.a

prefix=@prefix@
exec_prefix=@exec_prefix@
bindir=@bindir@

DEPS=$(libbackend)
INCLUDES=-I./backend -I..
LIBS=-L./backend -lbackend


.PHONY: all-recursive clean clean-app clean-recursive \
	distclean install install-app install-recursive


all: all-recursive smartdimmer


smartdimmer: $(LIB) smartdimmer.c
	$(CC) -o smartdimmer $(SOURCES) $(INCLUDES) $(LIBS)


clean: clean-recursive clean-app
clean-app:
	rm -f smartdimmer *.exe


distclean: distclean-recursive clean-app
	rm -f Makefile


install: install-recursive install-app
install-app:
	$(INSTALL) -c smartdimmer $(bindir)/smartdimmer


uninstall: uninstall-recursive uninstall-app
uninstall-app:
	rm -f $(bindir)/smartdimmer


# Walk through the sub directories and do what is requested
all-recursive clean-recursive distclean-recursive install-recursive uninstall-recursive:
	@set fnord; target=`echo $@ | sed s/-recursive//`; \
	list='$(SUBDIRS)'; for subdir in $$list; do \
	    $(MAKE) -C $$subdir $$target ; \
	done;

irgendwie habe ich es nicht hinbekommen, dass auch beim kpowersave zu machen. ich habe aber auch keine lust einen kleinen wrapper für die smartdimmer binary zu machen, nur weil ich zu dumm bin ein projekt einzurichten.

http://rapidshare.com/files/47088104/kp ... .2.tar.bz2
Antworten