Seite 1 von 1

[gelöst] Probleme beim Ausführen von Make

Verfasst: 12. Oktober 2007 17:35
von bw1faeh0
Hallo Leute,

also ich arbeite derzeit an einer Batch-Datei, die mir das Leben mit QT-Projekten einfacher macht.
Mit Hilfe der Batchdatei kann ich Projekt-Ordner erstellen, und wenn Projekt-Daten darin vorhanden sind, diese kompilieren.

dazu wird einmal pro Projekt qmake -project und anschließend qmake aufgerufen.
Danach wird jedesmal nur make gestartet, um die veräderten Cpp-Dateien zu kompilieren.

Mein problem ist nun, dass nach dem ich make aufgerufen habe keine weiteren Befehle mehr von der Batch-Datei ausgeführt werden. Ich weiß nicht, ob make irgendwelche 'komischen' returncodes abliefert, so dass die Batch unterbrochen wird.
Habt ihr da eine idee??
Kennt das Problem jemand??

Nachfolgend der Code der Batchdatei:

Code: Alles auswählen

REM	Batch-Datei zum Kompilieren eines QT-Projektes mittels installiertem QT und MinGW
REM	@author:	Christian Flämig
REM	@date:		2007-10-12

@echo off

REM	Path-Variablen zum Ausführen von qmake und make setzen

set QTDIR=\Qt\4.3.2
set PATH=\Qt\4.3.2\bin
set PATH=%PATH%;\MinGW\bin
set PATH=%PATH%;%SystemRoot%\System32
set QMAKESPEC=win32-g++

REM	Überprüfen, ob ein Parameter übergeben wurde
if %1.==. GOTO :NO_INTRO

CLS
echo.
echo.
echo Build-Batch zum kompilieren eines QT-Programms
echo ----------------------------------------------
echo.
echo Aufruf: 
echo   "QT_build" - Kompiliert QT-Projekt in diesem Verzeichnis.
echo   "QT_build Name" - Kompiliert QT-Projekt im Unterverzeichnis 'Name'.
echo                  Erzeugt Verzeichnis 'Name', falls nicht vorhanden.
echo.
echo Setting up a MinGW/Qt only environment...
echo -- QTDIR set to \Qt\4.3.2
echo -- PATH set to \Qt\4.3.2\bin
echo -- Adding \MinGW\bin to PATH
echo -- Adding %SystemRoot%\System32 to PATH
echo -- QMAKESPEC set to win32-g++

:NO_INTRO

echo.

REM	Wenn kein Parameter übergeben wurde, nimmt die Batch an, dass sie im 
REM	Quellcode-Verzeichnis liegt. Ansonsten erzeugt sie das Quellcode-Verzeichnis

if %2.==. GOTO :CORRECT_DIR_NAME
	echo.
	echo ---------------------------------------------
	echo   Warnung!
	echo   Projektverzeichnis darf keine Leerzeichen enthalten!
	GOTO :DIR_ERROR_END

:CORRECT_DIR_NAME
if %1.==. GOTO :BEGINN

	
if exist %1 GOTO :COPY_BUILD
echo ---------------------------------------------
echo   Erzeuge das Verzeichnis %1
echo.
mkdir %1
GOTO :END


REM	Kopiert sich selbst in das Quellcode-Verzeichnis	
:COPY_BUILD
if exist %1\QT_build.bat GOTO :CD
echo ---------------------------------------------
echo   Kopiere QT_build.bat in %1
echo.
copy QT_build.bat %1\QT_build.bat

REM	wechselt in das Quellcode-Verzeichnis und ruft sich selbst ohne Parameter auf
:CD
echo ---------------------------------------------
echo   Wechsle in %1
echo.
cd %1
echo ---------------------------------------------
echo   Starte QT_Build.bat
echo.
QT_build.bat
GOTO :END



:BEGINN
if exist qmake_project.tmp GOTO :QMAKE
	echo ---------------------------------------------
	echo   Starte qmake -project...
	qmake -project
	echo.
	echo.>qmake_project.tmp

:QMAKE
if exist qmake.tmp GOTO :CHECK_DIR
	echo ---------------------------------------------
	echo   Starte qmake...
	qmake
	echo.
	echo.>qmake.tmp

:CHECK_DIR
if exist %cd%\release GOTO :MINGW10
	echo ---------------------------------------------
	echo   qmake hat kein Output-Verzeichnis erzeugt.
	echo   Bitte die Quelldateien ueberpruefen!
	GOTO :END

:MINGW10
if exist release\mingwm10.dll GOTO :QTCORE4
	echo ---------------------------------------------
	echo   Kopiere mingwm10.dll in release-Pfad...
	copy \Qt\4.3.2\bin\mingwm10.dll release\mingwm10.dll

:QTCORE4
if exist release\QtCore4.dll GOTO :QTGUI4
	echo ---------------------------------------------
	echo   Kopiere QtCore4.dll in release-Pfad...
	copy \Qt\4.3.2\bin\QtCore4.dll release\QtCore4.dll

:QTGUI4
if exist release\QtGui4.dll GOTO :MAKE
	echo ---------------------------------------------
	echo   Kopiere QtGui4.dll in release-Pfad...
	copy \Qt\4.3.2\bin\QtGui4.dll release\QtGui4.dll

:MAKE
	echo ---------------------------------------------
	echo   make...
	echo.

	make

	echo ---------------------------------------------
	echo   Fertig!
	
	dir release\*.exe /B >> dir.tmp
	SET /p exe=<dir.tmp
	DEL dir.tmp
	echo datei: %exe%
	GOTO :END

:END

if %1.==. cd ..

:DIR_ERROR_END

Alles nach der Zeile "make" wird nicht mehr ausgeführt. Also es erscheint keine Ausgabe 'Fertig!' auf dem Bildschirm...

Hat jemand eine Ahnung, woran das liegen kann?

mfg

Christian

Verfasst: 12. Oktober 2007 18:15
von Christian81
Was hat das mit Qt-Programmierung zu tun?

probiere mal ein 'call make' bzw. 'call mingw32-make'

Verfasst: 12. Oktober 2007 18:31
von bw1faeh0
Danke, Call make blockiert folgende Aufrufe nicht.

naja, das Thema hat halt in meinen Augen was mit dem Kompilieren zu tun ;)

grüße

Christian