Project

General

Profile

Makefile and cross-compiling

Added by Marco Trapanese almost 13 years ago

Hello,

I finished a small project using QtCreator as IDE (no Qt code at all).

I tested it on my x86 machine, but now I need to cross-compile to arm (arm-linux-gnueabi-g).

I've already compiled wt for arm and placed everything in ~/arm.

I'd like to know how to change the makefile in order to crosscompile. In a Qt-related forum I shall ask how to setup QtCreator to do the job automagically.

This is the current makefile:

####### Compiler, tools and options

CC            = gcc
CXX           = g++
DEFINES       = -DQT_NO_DEBUG
CFLAGS        = -pipe -O2 -Wall -W -D_REENTRANT $(DEFINES)
CXXFLAGS      = -pipe -O2 -Wall -W -D_REENTRANT $(DEFINES)
INCPATH       = -I../../../QtSDK/Desktop/Qt/4.8.1/gcc/mkspecs/linux-g++ -I. -I../../../QtSDK/Desktop/Qt/4.8.1/gcc/include -I.
LINK          = g++
LFLAGS        = -Wl,-O1 -Wl,-rpath,/home/mark/QtSDK/Desktop/Qt/4.8.1/gcc/lib
LIBS          = $(SUBLIBS)  -L/home/mark/QtSDK/Desktop/Qt/4.8.1/gcc/lib -lzmq -L/usr/local/lib -lwt -lwthttp -lpthread 
AR            = ar cqs
RANLIB        = 
QMAKE         = /home/mark/QtSDK/Desktop/Qt/4.8.1/gcc/bin/qmake
TAR           = tar -cf
COMPRESS      = gzip -9f
COPY          = cp -f
SED           = sed
COPY_FILE     = $(COPY)
COPY_DIR      = $(COPY) -r
STRIP         = strip
INSTALL_FILE  = install -m 644 -p
INSTALL_DIR   = $(COPY_DIR)
INSTALL_PROGRAM = install -m 755 -p
DEL_FILE      = rm -f
SYMLINK       = ln -f -s
DEL_DIR       = rmdir
MOVE          = mv -f
CHK_DIR_EXISTS= test -d
MKDIR         = mkdir -p

####### Output directory

OBJECTS_DIR   = ./

####### Files

SOURCES       = WebServerApplication.cpp \
        PanelList.cpp \
        CsvUtil.cpp \
        ChartConfig.cpp \
        ApplicationCommands.cpp 
OBJECTS       = WebServerApplication.o \
        PanelList.o \
        CsvUtil.o \
        ChartConfig.o \
        ApplicationCommands.o
DIST          = ../../../QtSDK/Desktop/Qt/4.8.1/gcc/mkspecs/common/unix.conf \
        ../../../QtSDK/Desktop/Qt/4.8.1/gcc/mkspecs/common/linux.conf \
        ../../../QtSDK/Desktop/Qt/4.8.1/gcc/mkspecs/common/gcc-base.conf \
        ../../../QtSDK/Desktop/Qt/4.8.1/gcc/mkspecs/common/gcc-base-unix.conf \
        ../../../QtSDK/Desktop/Qt/4.8.1/gcc/mkspecs/common/g++-base.conf \
        ../../../QtSDK/Desktop/Qt/4.8.1/gcc/mkspecs/common/g++-unix.conf \
        ../../../QtSDK/Desktop/Qt/4.8.1/gcc/mkspecs/qconfig.pri \
        ../../../QtSDK/Desktop/Qt/4.8.1/gcc/mkspecs/modules/qt_webkit_version.pri \
        ../../../QtSDK/Desktop/Qt/4.8.1/gcc/mkspecs/features/qt_functions.prf \
        ../../../QtSDK/Desktop/Qt/4.8.1/gcc/mkspecs/features/qt_config.prf \
        ../../../QtSDK/Desktop/Qt/4.8.1/gcc/mkspecs/features/exclusive_builds.prf \
        ../../../QtSDK/Desktop/Qt/4.8.1/gcc/mkspecs/features/default_pre.prf \
        ../../../QtSDK/Desktop/Qt/4.8.1/gcc/mkspecs/features/release.prf \
        ../../../QtSDK/Desktop/Qt/4.8.1/gcc/mkspecs/features/default_post.prf \
        ../../../QtSDK/Desktop/Qt/4.8.1/gcc/mkspecs/features/unix/gdb_dwarf_index.prf \
        ../../../QtSDK/Desktop/Qt/4.8.1/gcc/mkspecs/features/warn_on.prf \
        ../../../QtSDK/Desktop/Qt/4.8.1/gcc/mkspecs/features/qt.prf \
        ../../../QtSDK/Desktop/Qt/4.8.1/gcc/mkspecs/features/unix/thread.prf \
        ../../../QtSDK/Desktop/Qt/4.8.1/gcc/mkspecs/features/moc.prf \
        ../../../QtSDK/Desktop/Qt/4.8.1/gcc/mkspecs/features/resources.prf \
        ../../../QtSDK/Desktop/Qt/4.8.1/gcc/mkspecs/features/uic.prf \
        ../../../QtSDK/Desktop/Qt/4.8.1/gcc/mkspecs/features/yacc.prf \
        ../../../QtSDK/Desktop/Qt/4.8.1/gcc/mkspecs/features/lex.prf \
        ../../../QtSDK/Desktop/Qt/4.8.1/gcc/mkspecs/features/include_source_dir.prf \
        webserver.pro
QMAKE_TARGET  = webserver.wt
DESTDIR       = 
TARGET        = webserver.wt

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: webserver.pro  ../../../QtSDK/Desktop/Qt/4.8.1/gcc/mkspecs/linux-g++/qmake.conf ../../../QtSDK/Desktop/Qt/4.8.1/gcc/mkspecs/common/unix.conf \
        ../../../QtSDK/Desktop/Qt/4.8.1/gcc/mkspecs/common/linux.conf \
        ../../../QtSDK/Desktop/Qt/4.8.1/gcc/mkspecs/common/gcc-base.conf \
        ../../../QtSDK/Desktop/Qt/4.8.1/gcc/mkspecs/common/gcc-base-unix.conf \
        ../../../QtSDK/Desktop/Qt/4.8.1/gcc/mkspecs/common/g++-base.conf \
        ../../../QtSDK/Desktop/Qt/4.8.1/gcc/mkspecs/common/g++-unix.conf \
        ../../../QtSDK/Desktop/Qt/4.8.1/gcc/mkspecs/qconfig.pri \
        ../../../QtSDK/Desktop/Qt/4.8.1/gcc/mkspecs/modules/qt_webkit_version.pri \
        ../../../QtSDK/Desktop/Qt/4.8.1/gcc/mkspecs/features/qt_functions.prf \
        ../../../QtSDK/Desktop/Qt/4.8.1/gcc/mkspecs/features/qt_config.prf \
        ../../../QtSDK/Desktop/Qt/4.8.1/gcc/mkspecs/features/exclusive_builds.prf \
        ../../../QtSDK/Desktop/Qt/4.8.1/gcc/mkspecs/features/default_pre.prf \
        ../../../QtSDK/Desktop/Qt/4.8.1/gcc/mkspecs/features/release.prf \
        ../../../QtSDK/Desktop/Qt/4.8.1/gcc/mkspecs/features/default_post.prf \
        ../../../QtSDK/Desktop/Qt/4.8.1/gcc/mkspecs/features/unix/gdb_dwarf_index.prf \
        ../../../QtSDK/Desktop/Qt/4.8.1/gcc/mkspecs/features/warn_on.prf \
        ../../../QtSDK/Desktop/Qt/4.8.1/gcc/mkspecs/features/qt.prf \
        ../../../QtSDK/Desktop/Qt/4.8.1/gcc/mkspecs/features/unix/thread.prf \
        ../../../QtSDK/Desktop/Qt/4.8.1/gcc/mkspecs/features/moc.prf \
        ../../../QtSDK/Desktop/Qt/4.8.1/gcc/mkspecs/features/resources.prf \
        ../../../QtSDK/Desktop/Qt/4.8.1/gcc/mkspecs/features/uic.prf \
        ../../../QtSDK/Desktop/Qt/4.8.1/gcc/mkspecs/features/yacc.prf \
        ../../../QtSDK/Desktop/Qt/4.8.1/gcc/mkspecs/features/lex.prf \
        ../../../QtSDK/Desktop/Qt/4.8.1/gcc/mkspecs/features/include_source_dir.prf
    $(QMAKE) -spec ../../../QtSDK/Desktop/Qt/4.8.1/gcc/mkspecs/linux-g++ -o Makefile webserver.pro
../../../QtSDK/Desktop/Qt/4.8.1/gcc/mkspecs/common/unix.conf:
../../../QtSDK/Desktop/Qt/4.8.1/gcc/mkspecs/common/linux.conf:
../../../QtSDK/Desktop/Qt/4.8.1/gcc/mkspecs/common/gcc-base.conf:
../../../QtSDK/Desktop/Qt/4.8.1/gcc/mkspecs/common/gcc-base-unix.conf:
../../../QtSDK/Desktop/Qt/4.8.1/gcc/mkspecs/common/g++-base.conf:
../../../QtSDK/Desktop/Qt/4.8.1/gcc/mkspecs/common/g++-unix.conf:
../../../QtSDK/Desktop/Qt/4.8.1/gcc/mkspecs/qconfig.pri:
../../../QtSDK/Desktop/Qt/4.8.1/gcc/mkspecs/modules/qt_webkit_version.pri:
../../../QtSDK/Desktop/Qt/4.8.1/gcc/mkspecs/features/qt_functions.prf:
../../../QtSDK/Desktop/Qt/4.8.1/gcc/mkspecs/features/qt_config.prf:
../../../QtSDK/Desktop/Qt/4.8.1/gcc/mkspecs/features/exclusive_builds.prf:
../../../QtSDK/Desktop/Qt/4.8.1/gcc/mkspecs/features/default_pre.prf:
../../../QtSDK/Desktop/Qt/4.8.1/gcc/mkspecs/features/release.prf:
../../../QtSDK/Desktop/Qt/4.8.1/gcc/mkspecs/features/default_post.prf:
../../../QtSDK/Desktop/Qt/4.8.1/gcc/mkspecs/features/unix/gdb_dwarf_index.prf:
../../../QtSDK/Desktop/Qt/4.8.1/gcc/mkspecs/features/warn_on.prf:
../../../QtSDK/Desktop/Qt/4.8.1/gcc/mkspecs/features/qt.prf:
../../../QtSDK/Desktop/Qt/4.8.1/gcc/mkspecs/features/unix/thread.prf:
../../../QtSDK/Desktop/Qt/4.8.1/gcc/mkspecs/features/moc.prf:
../../../QtSDK/Desktop/Qt/4.8.1/gcc/mkspecs/features/resources.prf:
../../../QtSDK/Desktop/Qt/4.8.1/gcc/mkspecs/features/uic.prf:
../../../QtSDK/Desktop/Qt/4.8.1/gcc/mkspecs/features/yacc.prf:
../../../QtSDK/Desktop/Qt/4.8.1/gcc/mkspecs/features/lex.prf:
../../../QtSDK/Desktop/Qt/4.8.1/gcc/mkspecs/features/include_source_dir.prf:
qmake:  FORCE
    @$(QMAKE) -spec ../../../QtSDK/Desktop/Qt/4.8.1/gcc/mkspecs/linux-g++ -o Makefile webserver.pro

dist: 
    @$(CHK_DIR_EXISTS) .tmp/webserver.wt1.0.0 || $(MKDIR) .tmp/webserver.wt1.0.0 
    $(COPY_FILE) --parents $(SOURCES) $(DIST) .tmp/webserver.wt1.0.0/ && $(COPY_FILE) --parents PanelList.h CsvUtil.h ChartConfig.h ApplicationCommands.h .tmp/webserver.wt1.0.0/ && $(COPY_FILE) --parents WebServerApplication.cpp PanelList.cpp CsvUtil.cpp ChartConfig.cpp ApplicationCommands.cpp .tmp/webserver.wt1.0.0/ && (cd `dirname .tmp/webserver.wt1.0.0` && $(TAR) webserver.wt1.0.0.tar webserver.wt1.0.0 && $(COMPRESS) webserver.wt1.0.0.tar) && $(MOVE) `dirname .tmp/webserver.wt1.0.0`/webserver.wt1.0.0.tar.gz . && $(DEL_FILE) -r .tmp/webserver.wt1.0.0


clean:compiler_clean 
    -$(DEL_FILE) $(OBJECTS)
    -$(DEL_FILE) *~ core *.core


####### Sub-libraries

distclean: clean
    -$(DEL_FILE) $(TARGET) 
    -$(DEL_FILE) Makefile


check: first

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:
compiler_moc_header_clean:
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_yacc_decl_make_all:
compiler_yacc_decl_clean:
compiler_yacc_impl_make_all:
compiler_yacc_impl_clean:
compiler_lex_make_all:
compiler_lex_clean:
compiler_clean: 

####### Compile

WebServerApplication.o: WebServerApplication.cpp ApplicationCommands.h \
        ChartConfig.h \
        CsvUtil.h
    $(CXX) -c $(CXXFLAGS) $(INCPATH) -o WebServerApplication.o WebServerApplication.cpp

PanelList.o: PanelList.cpp PanelList.h
    $(CXX) -c $(CXXFLAGS) $(INCPATH) -o PanelList.o PanelList.cpp

CsvUtil.o: CsvUtil.cpp CsvUtil.h
    $(CXX) -c $(CXXFLAGS) $(INCPATH) -o CsvUtil.o CsvUtil.cpp

ChartConfig.o: ChartConfig.cpp ChartConfig.h \
        PanelList.h
    $(CXX) -c $(CXXFLAGS) $(INCPATH) -o ChartConfig.o ChartConfig.cpp

ApplicationCommands.o: ApplicationCommands.cpp ApplicationCommands.h \
        ChartConfig.h \
        CsvUtil.h
    $(CXX) -c $(CXXFLAGS) $(INCPATH) -o ApplicationCommands.o ApplicationCommands.cpp

####### Install

install:   FORCE

uninstall:   FORCE

FORCE:

It's easy to change the compiler and linker settings.

But what about the other items?

Thanks in advance

Mark


Replies (2)

RE: Makefile and cross-compiling - Added by Marco Trapanese almost 13 years ago

Ok, I found a way, but it's so awful that I don't post it now. In the next days I'll try to find a better solution and I will come back here. If anyone is interested in.

RE: Makefile and cross-compiling - Added by Andy Meehan over 12 years ago

Did you ever find a good solution for this? I know this is a bit old but I'm interested in your results.

    (1-2/2)