make->cmake; Neueinstieg mit cmake und Projektumstellung
-
Ich habe ein Makefile erstellt, welches einen Ordner voller *c und *h -Dateien in eine Library linkt.
CC=gcc AR=ar RANLIB=ranlib system=Linux OBJECTS=backend.o bios.o config.o error.o nv30.o nv31.o nv40.o info.o overclock.o i2c.o xf86i2c.o lm99.o f75375.o w83l785r.o libc_wrapper.o CFLAGS= ifeq ($(system), FreeBSD) OBJECTS+=back_bsd.o else ifeq ($(system), Win32) OBJECTS+=back_win32.o else OBJECTS+=back_linux.o endif endif .PHONY: clean distclean all: libbackend.a libbackend.a: $(OBJECTS) $(AR) cru libbackend.a $(OBJECTS) $(RANLIB) libbackend.a clean: rm -f *.o *.a distclean: clean rm -f Makefile install: uninstall:
Dann habe ich einen Ordner, welcher auf Basis dieser Library eine 2. erstellen sollte:
CC=gcc AR=ar RANLIB=ranlib system=Linux SOURCES=smartdimmer.c SUBDIRS=backend libbackend=./backend/libbackend.a DEPS=$(libbackend) INCLUDES=-I./backend -I.. LIBS=-L./backend -lbackend OBJECTS=smartdimmer.o ./backend/libbackend.a .PHONY: all-recursive clean distclean all: all-recursive smartdimmer.o libsmartdimmer.a smartdimmer.o: $(LIB) smartdimmer.c $(CC) -c smartdimmer.c $(SOURCES) $(INCLUDES) $(LIBS) libsmartdimmer.a: $(OBJECTS) $(AR) cru libsmartdimmer.a $(OBJECTS) $(RANLIB) libsmartdimmer.a clean: clean-recursive clean-lib clean-lib: rm -f *.o *.a *~ distclean: distclean-recursive clean-lib rm -f Makefile install: uninstall: # Walk through the sub directories and do what is requested all-recursive clean-recursive distclean-recursive: @set fnord; target=`echo $@ | sed s/-recursive//`; \ list='$(SUBDIRS)'; for subdir in $$list; do \ $(MAKE) -C $$subdir $$target ; \ done;
Und nun wollte ich aus KDE-technischen Gründen das Ganze auf cmake umstellen....
Dazu habe ich die Dateien der beiden Unterordner aufgezählt und per cmake-buildmakro sollen dann daraus die Libs gemacht werden. Der untere Abschnitt stammt noch aus dem Kde-Plugin-Tutorial. Allerdings scheint Irgendwas schief zu laufen# Project Needs a name ofcourse project(plasma-tutorial1) add_subdirectory( backend ) add_subdirectory( smartdimmer ) # source files for zlib SET(BACKEND_SRCS ${BACKEND_SRCS} backend/backend.c backend/bios.c backend/config.c backend/error.c backend/nv30.c backend/nv31.c backend/nv40.c backend/info.c backend/overclock.c backend/i2c.c backend/xf86i2c.c backend/lm99.c backend/f75375.c backend/w83l785r.c backend/libc_wrapper.c ) SET(SMARTD_SRCS ${SMARTD_SRCS} smartdimmer/smartdimmer.c ) ADD_LIBRARY(backend_shared ${BACKEND_SRCS}) ADD_LIBRARY(smartdimmer_shared ${SMARTD_SRCS}) # Find the required Libaries find_package(KDE4 REQUIRED) include(KDE4Defaults) find_package(Plasma REQUIRED) add_definitions (${QT_DEFINITIONS} ${KDE4_DEFINITIONS}) include_directories( ${CMAKE_SOURCE_DIR} ${CMAKE_BINARY_DIR} ${KDE4_INCLUDES} ${CMAKE_SOURCE_DIR}/backend ${CMAKE_SOURCE_DIR}/smartdimmer ) # We add our source code here set(tutorial1_SRCS plasma-tutorial1.cpp PopUp.cpp) # Now make sure all files get to the right place kde4_add_plugin(plasma_applet_tutorial1 ${tutorial1_SRCS}) target_link_libraries(plasma_applet_tutorial1 ${PLASMA_LIBS} ${KDE4_KDEUI_LIBS}) install(TARGETS plasma_applet_tutorial1 DESTINATION ${PLUGIN_INSTALL_DIR}) install(FILES plasma-applet-tutorial1.desktop DESTINATION ${SERVICES_INSTALL_DIR})
Ich bekomme folgenden Fehler:
[ 5%] Building C object CMakeFiles/backend_shared.dir/backend/backend.o /home/Xerces/devel/dimmer_applet_cmake/backend/backend.c: In function ‘set_card’: /home/Xerces/devel/dimmer_applet_cmake/backend/backend.c:83: warning: passing argument 1 of ‘NV_I2CCreateBusPtr’ discards qualifiers from pointer target type /home/Xerces/devel/dimmer_applet_cmake/backend/backend.c:84: warning: passing argument 1 of ‘NV_I2CCreateBusPtr’ discards qualifiers from pointer target type /home/Xerces/devel/dimmer_applet_cmake/backend/backend.c:92: warning: passing argument 1 of ‘NV_I2CCreateBusPtr’ discards qualifiers from pointer target type [ 10%] Building C object CMakeFiles/backend_shared.dir/backend/bios.o /home/Xerces/devel/dimmer_applet_cmake/backend/bios.c:314:5: warning: "DEBUG" is not defined /home/Xerces/devel/dimmer_applet_cmake/backend/bios.c: In function ‘dump_bios’: /home/Xerces/devel/dimmer_applet_cmake/backend/bios.c:324: warning: unused variable ‘j’ /home/Xerces/devel/dimmer_applet_cmake/backend/bios.c: In function ‘parse_bios’: /home/Xerces/devel/dimmer_applet_cmake/backend/bios.c:393: warning: passing argument 2 of ‘locate’ discards qualifiers from pointer target type /home/Xerces/devel/dimmer_applet_cmake/backend/bios.c:403: warning: passing argument 2 of ‘locate’ discards qualifiers from pointer target type /home/Xerces/devel/dimmer_applet_cmake/backend/bios.c:403: error: expected expression before ‘/’ token /home/Xerces/devel/dimmer_applet_cmake/backend/bios.c:408: warning: passing argument 2 of ‘locate’ discards qualifiers from pointer target type /home/Xerces/devel/dimmer_applet_cmake/backend/bios.c:408: warning: passing argument 2 of ‘locate’ discards qualifiers from pointer target type /home/Xerces/devel/dimmer_applet_cmake/backend/bios.c:439:5: warning: "DEBUG" is not defined /home/Xerces/devel/dimmer_applet_cmake/backend/bios.c:390: warning: unused variable ‘i’ make[2]: *** [CMakeFiles/backend_shared.dir/backend/bios.o] Fehler 1
Sowas trat bei den Makefiles nicht auf, weis jemand Rat? Ich bin leider vollkommen neu bei cmake.