makefile troubles
-
Hello, ...
I want to create a SIP Client Application using Qt4 for the User Interface. My developing is really at the beginning and I got a problem with the makefile. My SIP Client GUI is based on a OpenSource SIP Stack (pjsip.org). On this Homepage is a Manual which explains how to create a own SIP Client GUI. They say, that I have to write my own makefile which involves following lines.
#Modify this to point to the PJSIP location. PJBASE=/home/myself/pjproject-0.5.10.2 include $(PJBASE)/build.mak CC = $(APP_CC) LDFLAGS = $(APP_LDFLAGS) LDLIBS = $(APP_LDLIBS) CFLAGS = $(APP_CFLAGS) CPPFLAGS= ${CFLAGS} # If your application is in a file named myapp.cpp or myapp.c # this is the line you will need to build the binary. all: myapp myapp: myapp.cpp $(CC) -o $@ $< $(CPPFLAGS) $(LDFLAGS) $(LDLIBS) clean: rm -f myapp.o myapp
But also the command
qmake
generates his own makefiles which involve the path for the Qt4 include files.
So when I use the the makefile generated by qmake, the compiler doesn't find the includes from the pjsip.
So my Question: How can or must I combine or build the makefile that i can make a successful build of my program.
Best Regards,...
-
Okay, I try it another way:
This is my makefile generated by qmake:
-############################################################################# # Makefile for building: usc-es_0-1 # Generated by qmake (2.01a) (Qt 4.2.3) on: Thu Apr 12 08:32:45 2007 # Project: usc-es_0-1.pro # Template: app # Command: /usr/local/Trolltech/Qt-4.2.3/bin/qmake -unix -o Makefile usc-es_0-1.pro ############################################################################# ####### Compiler, tools and options CC = gcc CXX = g++ LEX = flex YACC = yacc DEFINES = -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED CFLAGS = -pipe -O2 -Wall -W -D_REENTRANT $(DEFINES) CXXFLAGS = -pipe -O2 -Wall -W -D_REENTRANT $(DEFINES) LEXFLAGS = YACCFLAGS = -d INCPATH = -I/usr/local/Trolltech/Qt-4.2.3/mkspecs/linux-g++ -I. -I/usr/local/Trolltech/Qt-4.2.3/include/QtCore -I/usr/local/Trolltech/Qt-4.2.3/include/QtCore -I/usr/local/Trolltech/Qt-4.2.3/include/QtGui -I/usr/local/Trolltech/Qt-4.2.3/include/QtGui -I/usr/local/Trolltech/Qt-4.2.3/include -I. -Isrc -I. -I. LINK = g++ LFLAGS = -Wl,-rpath,/usr/local/Trolltech/Qt-4.2.3/lib LIBS = $(SUBLIBS) -L/usr/local/Trolltech/Qt-4.2.3/lib -lQtGui -L/home/nb100146/qt-x11-opensource-src-4.2.3/lib -L/usr/X11R6/lib -lpng -lSM -lICE -pthread -pthread -lXi -lXrender -lXrandr -lXfixes -lXcursor -lXinerama -lfreetype -lfontconfig -lXext -lX11 -lQtCore -lz -lm -pthread -lgthread-2.0 -lglib-2.0 -ldl -lpthread AR = ar cqs RANLIB = QMAKE = /usr/local/Trolltech/Qt-4.2.3/bin/qmake TAR = tar -cf COMPRESS = gzip -9f COPY = cp -f COPY_FILE = $(COPY) COPY_DIR = $(COPY) -r INSTALL_FILE = install -m 644 -p INSTALL_DIR = $(COPY_DIR) INSTALL_PROGRAM = install -m 755 -p DEL_FILE = rm -f SYMLINK = ln -sf DEL_DIR = rmdir MOVE = mv -f CHK_DIR_EXISTS= test -d MKDIR = mkdir -p ####### Output directory OBJECTS_DIR = ./ ####### Files SOURCES = src/uscgui.cpp \ src/uscinterface.cpp moc_uscgui.cpp OBJECTS = uscgui.o \ uscinterface.o \ moc_uscgui.o DIST = /usr/local/Trolltech/Qt-4.2.3/mkspecs/common/unix.conf \ /usr/local/Trolltech/Qt-4.2.3/mkspecs/common/g++.conf \ /usr/local/Trolltech/Qt-4.2.3/mkspecs/common/linux.conf \ /usr/local/Trolltech/Qt-4.2.3/mkspecs/qconfig.pri \ /usr/local/Trolltech/Qt-4.2.3/mkspecs/features/qt_functions.prf \ /usr/local/Trolltech/Qt-4.2.3/mkspecs/features/qt_config.prf \ /usr/local/Trolltech/Qt-4.2.3/mkspecs/features/exclusive_builds.prf \ /usr/local/Trolltech/Qt-4.2.3/mkspecs/features/default_pre.prf \ /usr/local/Trolltech/Qt-4.2.3/mkspecs/features/release.prf \ /usr/local/Trolltech/Qt-4.2.3/mkspecs/features/default_post.prf \ /usr/local/Trolltech/Qt-4.2.3/mkspecs/features/warn_on.prf \ /usr/local/Trolltech/Qt-4.2.3/mkspecs/features/qt.prf \ /usr/local/Trolltech/Qt-4.2.3/mkspecs/features/unix/thread.prf \ /usr/local/Trolltech/Qt-4.2.3/mkspecs/features/moc.prf \ /usr/local/Trolltech/Qt-4.2.3/mkspecs/features/resources.prf \ /usr/local/Trolltech/Qt-4.2.3/mkspecs/features/uic.prf \ usc-es_0-1.pro QMAKE_TARGET = usc-es_0-1 DESTDIR = TARGET = usc-es_0-1 first: all ####### Implicit rules .SUFFIXES: .o .c .cpp .cc .cxx .C .cpp.o: $(CXX) -c $(CXXFLAGS) $(INCPATH) -o "$@" "$<" .cc.o: $(CXX) -c $(CXXFLAGS) $(INCPATH) -o "$@" "$<" .cxx.o: $(CXX) -c $(CXXFLAGS) $(INCPATH) -o "$@" "$<" .C.o: $(CXX) -c $(CXXFLAGS) $(INCPATH) -o "$@" "$<" .c.o: $(CC) -c $(CFLAGS) $(INCPATH) -o "$@" "$<" ####### Build rules all: Makefile $(TARGET) $(TARGET): $(OBJECTS) $(LINK) $(LFLAGS) -o $(TARGET) $(OBJECTS) $(OBJCOMP) $(LIBS) Makefile: usc-es_0-1.pro /usr/local/Trolltech/Qt-4.2.3/mkspecs/linux-g++/qmake.conf /usr/local/Trolltech/Qt-4.2.3/mkspecs/common/unix.conf \ /usr/local/Trolltech/Qt-4.2.3/mkspecs/common/g++.conf \ /usr/local/Trolltech/Qt-4.2.3/mkspecs/common/linux.conf \ /usr/local/Trolltech/Qt-4.2.3/mkspecs/qconfig.pri \ /usr/local/Trolltech/Qt-4.2.3/mkspecs/features/qt_functions.prf \ /usr/local/Trolltech/Qt-4.2.3/mkspecs/features/qt_config.prf \ /usr/local/Trolltech/Qt-4.2.3/mkspecs/features/exclusive_builds.prf \ /usr/local/Trolltech/Qt-4.2.3/mkspecs/features/default_pre.prf \ /usr/local/Trolltech/Qt-4.2.3/mkspecs/features/release.prf \ /usr/local/Trolltech/Qt-4.2.3/mkspecs/features/default_post.prf \ /usr/local/Trolltech/Qt-4.2.3/mkspecs/features/warn_on.prf \ /usr/local/Trolltech/Qt-4.2.3/mkspecs/features/qt.prf \ /usr/local/Trolltech/Qt-4.2.3/mkspecs/features/unix/thread.prf \ /usr/local/Trolltech/Qt-4.2.3/mkspecs/features/moc.prf \ /usr/local/Trolltech/Qt-4.2.3/mkspecs/features/resources.prf \ /usr/local/Trolltech/Qt-4.2.3/mkspecs/features/uic.prf \ /usr/local/Trolltech/Qt-4.2.3/lib/libQtGui.prl \ /usr/local/Trolltech/Qt-4.2.3/lib/libQtCore.prl $(QMAKE) -unix -o Makefile usc-es_0-1.pro /usr/local/Trolltech/Qt-4.2.3/mkspecs/common/unix.conf: /usr/local/Trolltech/Qt-4.2.3/mkspecs/common/g++.conf: /usr/local/Trolltech/Qt-4.2.3/mkspecs/common/linux.conf: /usr/local/Trolltech/Qt-4.2.3/mkspecs/qconfig.pri: /usr/local/Trolltech/Qt-4.2.3/mkspecs/features/qt_functions.prf: /usr/local/Trolltech/Qt-4.2.3/mkspecs/features/qt_config.prf: /usr/local/Trolltech/Qt-4.2.3/mkspecs/features/exclusive_builds.prf: /usr/local/Trolltech/Qt-4.2.3/mkspecs/features/default_pre.prf: /usr/local/Trolltech/Qt-4.2.3/mkspecs/features/release.prf: /usr/local/Trolltech/Qt-4.2.3/mkspecs/features/default_post.prf: /usr/local/Trolltech/Qt-4.2.3/mkspecs/features/warn_on.prf: /usr/local/Trolltech/Qt-4.2.3/mkspecs/features/qt.prf: /usr/local/Trolltech/Qt-4.2.3/mkspecs/features/unix/thread.prf: /usr/local/Trolltech/Qt-4.2.3/mkspecs/features/moc.prf: /usr/local/Trolltech/Qt-4.2.3/mkspecs/features/resources.prf: /usr/local/Trolltech/Qt-4.2.3/mkspecs/features/uic.prf: /usr/local/Trolltech/Qt-4.2.3/lib/libQtGui.prl: /usr/local/Trolltech/Qt-4.2.3/lib/libQtCore.prl: qmake: FORCE @$(QMAKE) -unix -o Makefile usc-es_0-1.pro dist: @$(CHK_DIR_EXISTS) .tmp/usc-es_0-11.0.0 || $(MKDIR) .tmp/usc-es_0-11.0.0 $(COPY_FILE) --parents $(SOURCES) $(DIST) .tmp/usc-es_0-11.0.0/ && $(COPY_FILE) --parents src/uscgui.h .tmp/usc-es_0-11.0.0/ && $(COPY_FILE) --parents src/uscgui.cpp src/uscinterface.cpp .tmp/usc-es_0-11.0.0/ && (cd `dirname .tmp/usc-es_0-11.0.0` && $(TAR) usc-es_0-11.0.0.tar usc-es_0-11.0.0 && $(COMPRESS) usc-es_0-11.0.0.tar) && $(MOVE) `dirname .tmp/usc-es_0-11.0.0`/usc-es_0-11.0.0.tar.gz . && $(DEL_FILE) -r .tmp/usc-es_0-11.0.0 yaccclean: lexclean: clean:compiler_clean -$(DEL_FILE) $(OBJECTS) -$(DEL_FILE) *~ core *.core ####### Sub-libraries distclean: clean -$(DEL_FILE) $(TARGET) -$(DEL_FILE) Makefile /usr/local/Trolltech/Qt-4.2.3/bin/moc: (cd $(QTDIR)/src/tools/moc && $(MAKE)) mocclean: compiler_moc_header_clean compiler_moc_source_clean mocables: compiler_moc_header_make_all compiler_moc_source_make_all compiler_moc_header_make_all: moc_uscgui.cpp compiler_moc_header_clean: -$(DEL_FILE) moc_uscgui.cpp moc_uscgui.cpp: src/uscgui.h \ /usr/local/Trolltech/Qt-4.2.3/bin/moc /usr/local/Trolltech/Qt-4.2.3/bin/moc $(DEFINES) $(INCPATH) src/uscgui.h -o moc_uscgui.cpp compiler_rcc_make_all: compiler_rcc_clean: compiler_image_collection_make_all: qmake_image_collection.cpp compiler_image_collection_clean: -$(DEL_FILE) qmake_image_collection.cpp compiler_moc_source_make_all: compiler_moc_source_clean: compiler_uic_make_all: compiler_uic_clean: compiler_clean: compiler_moc_header_clean compiler_rcc_clean compiler_image_collection_clean compiler_moc_source_clean compiler_uic_clean ####### Compile uscgui.o: src/uscgui.cpp src/uscgui.h $(CXX) -c $(CXXFLAGS) $(INCPATH) -o uscgui.o src/uscgui.cpp uscinterface.o: src/uscinterface.cpp src/uscgui.h $(CXX) -c $(CXXFLAGS) $(INCPATH) -o uscinterface.o src/uscinterface.cpp moc_uscgui.o: moc_uscgui.cpp $(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_uscgui.o moc_uscgui.cpp ####### Install install: FORCE uninstall: FORCE FORCE:
I have to include in this makefile some other lines, because I want to build a application which is based on the sources of the pjproject sources. In a manual of pjproject is written that my makefile have to look like this:
#Modify this to point to the PJSIP location. PJBASE=/home/myself/pjproject-0.5.10.2 include $(PJBASE)/build.mak CC = $(APP_CC) LDFLAGS = $(APP_LDFLAGS) LDLIBS = $(APP_LDLIBS) CFLAGS = $(APP_CFLAGS) CPPFLAGS= ${CFLAGS} # If your application is in a file named myapp.cpp or myapp.c # this is the line you will need to build the binary. all: myapp myapp: myapp.cpp $(CC) -o $@ $< $(CPPFLAGS) $(LDFLAGS) $(LDLIBS) clean: rm -f myapp.o myapp
My question: How can I include this few lines to the Qt specific makefile that the make also finds the pjproject sources????
Best Regards,...
-
CPPFLAGS += /wohin/auch/immer
bzw use
INCLUDEPATH = /auch/wo/hin
-
Thanks for your information. But just yet I find out how to handle my problem. qmake also generates me a .pro file before it generates me the Makefile. The .pro file is much easier to understand and to configure by a "human being".
So today I find out how to fill up this .pro file correctly with the PSJIP specific Includes and Libraries.
My Profile looks like this at the moment:
###################################################################### # Automatically generated by qmake (2.01a) Thu Apr 12 15:03:47 2007 ###################################################################### TEMPLATE = app TARGET = DEPENDPATH += . src INCLUDEPATH += . src LIBS += -L/home/user/pjproject-0.5.10.2/pjlib/lib LIBS += -L/home/user/pjproject-0.5.10.2/pjlib-util/lib/ LIBS += -L/home/user/pjproject-0.5.10.2/pjmedia/lib LIBS += -L/home/user/pjproject-0.5.10.2/pjsip/lib LIBS += -lpjsua-i686-pc-linux-gnu LIBS += -lpjsip-ua-i686-pc-linux-gnu LIBS += -lpjsip-simple-i686-pc-linux-gnu LIBS += -lpjsip-i686-pc-linux-gnu LIBS += -lpjmedia-codec-i686-pc-linux-gnu LIBS += -lpjmedia-i686-pc-linux-gnu LIBS += -lpjmedia-codec-i686-pc-linux-gnu LIBS += -lpjlib-util-i686-pc-linux-gnu LIBS += -lpj-i686-pc-linux-gnu LIBS += -lm -lnsl -lrt -lpthread INCLUDEPATH += /home/user/pjproject-0.5.10.2/pjlib/include INCLUDEPATH += /home/user/pjproject-0.5.10.2/pjlib-util/include INCLUDEPATH += /home/user/pjproject-0.5.10.2/pjmedia/include INCLUDEPATH += /home/user/pjproject-0.5.10.2/pjsip/include # Input HEADERS += src/uscgui.h SOURCES += src/uscgui.cpp src/uscinterface.cpp
And it works with this configuration.
Thanks for your help!
Best Regards,...