Russian Qt Forum

Qt => Установка, сборка, отладка, тестирование => Тема начата: QtProger от Октябрь 20, 2009, 17:49



Название: Компиляция в Виндовой консоли
Отправлено: QtProger от Октябрь 20, 2009, 17:49
Как скомпилировать программу в консоли ? Ввел qmake, сгенерировался makefile. Дальше ввожу make, выдает 'make' is not recognized as an internal or external command, operable program or batch file.


Название: Re: Компиляция в Виндовой консоли
Отправлено: Пантер от Октябрь 20, 2009, 17:51
mingw32-make
==================
Создай файл make.bat следующего содержания:
Код:
mingw32-make %%
И закинь каталог, доступный через PATH.


Название: Re: Компиляция в Виндовой консоли
Отправлено: QtProger от Октябрь 20, 2009, 18:17
Работает :D Спасибо большое !


Название: Re: Компиляция в Виндовой консоли
Отправлено: PavelDart от Октябрь 21, 2009, 08:11
mingw32-make
==================
Создай файл make.bat следующего содержания:
Код:
mingw32-make %%
И закинь каталог, доступный через PATH.

У меня такая же проблема. Создал, положил в с:\MinGW\bin
вот текст консоли:

[PavelDart] E:\ALT_media_space\client_nano\win_nano$ make

 [PavelDart] E:\ALT_media_space\client_nano\win_nano$ mingw32-make %
mingw32-make: *** No rule to make target `%'.  Stop.


Название: Re: Компиляция в Виндовой консоли
Отправлено: lit-uriy от Октябрь 21, 2009, 11:30
>>mingw32-make %%
В батнике все аргументы передаются так:
mingw32-make %*


Название: Re: Компиляция в Виндовой консоли
Отправлено: kuzulis от Октябрь 21, 2009, 12:37
А зачем батник? Просто переменные окружения настроить и всё...
У меня так (для юзера):
Цитировать
PATH=D:\Qt\4.1.1\bin;D:\MinGW\bin
QMAKESPEC=win32-g++
QTDIR=D:\Qt\4.1.1

и всё работает :)


Название: Re: Компиляция в Виндовой консоли
Отправлено: Пантер от Октябрь 21, 2009, 17:15
>>mingw32-make %%
В батнике все аргументы передаются так:
mingw32-make %*
Тьфу, очепятался. :)


Название: Re: Компиляция в Виндовой консоли
Отправлено: PavelDart от Октябрь 21, 2009, 18:13
Прокомментируйте пожауйста вот это:

[PavelDart] E:\ALT_media_space\client_nano\win_nano$ make

 [PavelDart] E:\ALT_media_space\client_nano\win_nano$ mingw32-make
makefile:89: warning: overriding commands for target `.'
makefile:86: warning: ignoring old commands for target `.'
C:\Qt\3.3.4\bin\uic.exe add.ui -o add.h
process_begin: CreateProcess(NULL, C:\Qt\3.3.4\bin\uic.exe add.ui -o add.h, ...) failed.
make (e=2): ═х єфрхЄё  эрщЄш єърчрээ√щ Їрщы.
mingw32-make: *** [add.h] Error 2
 [PavelDart] E:\ALT_media_space\client_nano\win_nano$


На лине приложение собиралось, правда были придирки к деструктору.


Название: Re: Компиляция в Виндовой консоли
Отправлено: Alex Custov от Октябрь 21, 2009, 19:23
в поставке Qt 2009.03 есть специальный скрипт qtenv.bat:

Цитировать
@echo off
rem
rem This file is generated
rem
echo Setting up a MinGW/Qt only environment...
echo -- QTDIR set to D:\Qt\2009.03\qt
echo -- PATH set to D:\Qt\2009.03\qt\bin
echo -- Adding D:\Qt\2009.03\bin to PATH
echo -- Adding %SystemRoot%\System32 to PATH
echo -- QMAKESPEC set to win32-g++
set QTDIR=D:\Qt\2009.03\qt
set PATH=D:\Qt\2009.03\qt\bin
set PATH=%PATH%;D:\Qt\2009.03\bin;D:\Qt\2009.03\mingw\bin
set PATH=%PATH%;%SystemRoot%\System32
set QMAKESPEC=win32-g++


Название: Re: Компиляция в Виндовой консоли
Отправлено: Пантер от Октябрь 21, 2009, 19:44
Прокомментируйте пожауйста вот это:

[PavelDart] E:\ALT_media_space\client_nano\win_nano$ make

 [PavelDart] E:\ALT_media_space\client_nano\win_nano$ mingw32-make
makefile:89: warning: overriding commands for target `.'
makefile:86: warning: ignoring old commands for target `.'
C:\Qt\3.3.4\bin\uic.exe add.ui -o add.h
process_begin: CreateProcess(NULL, C:\Qt\3.3.4\bin\uic.exe add.ui -o add.h, ...) failed.
make (e=2): ═х єфрхЄё  эрщЄш єърчрээ√щ Їрщы.
mingw32-make: *** [add.h] Error 2
 [PavelDart] E:\ALT_media_space\client_nano\win_nano$


На лине приложение собиралось, правда были придирки к деструктору.
Процесс не смог запуститься. Попробуй перезагрузить машину.


Название: Re: Компиляция в Виндовой консоли
Отправлено: PavelDart от Октябрь 21, 2009, 20:03

Процесс не смог запуститься. Попробуй перезагрузить машину.

После перезагрузки запустил батник

@set PATH=C:\MinGW\bin;C:\MinGW\mingw32\bin;%PATH%
@set INCLUDE=C:\MinGW\include;%INCLUDE%
@set LIB=C:\MinGW\lib;%LIB%
@set MINGWDIR=C:\MinGW;%MINGWDIR%
@set QMAKESPEC=win32-g++

Результат прежний.


Название: Re: Компиляция в Виндовой консоли
Отправлено: Пантер от Октябрь 21, 2009, 20:16
А QTDIR задана? Попробуй так:
@set PATH=C:\MinGW\bin;C:\MinGW\mingw32\bin;c:\qt\bin;%PATH%
c:\qt\bin замени на нужное.


Название: Re: Компиляция в Виндовой консоли
Отправлено: PavelDart от Октябрь 21, 2009, 20:41
А QTDIR задана? Попробуй так:
@set PATH=C:\MinGW\bin;C:\MinGW\mingw32\bin;c:\qt\bin;%PATH%
c:\qt\bin замени на нужное.


 [PavelDart] E:\ALT_media_space\client_nano\win_nano$ mingw32-make
makefile:89: warning: overriding commands for target `.'
makefile:86: warning: ignoring old commands for target `.'
C:\Qt\3.3.4\bin\uic.exe add.ui -o add.h
process_begin: CreateProcess(NULL, C:\Qt\3.3.4\bin\uic.exe add.ui -o add.h, ...) failed.
make (e=2): ═х єфрхЄё  эрщЄш єърчрээ√щ Їрщы.
mingw32-make: *** [add.h] Error 2

 
 [PavelDart] E:\ALT_media_space\client_nano\win_nano$ echo %path%
C:\MinGW\bin;C:\MinGW\mingw32\bin;C:\Qt\3.3.4\bin;C:\MinGW\bin;C:\MinGW\mingw32\bin;C:\Qt\3.3.4\bin;O
:\oraclexe\app\oracle\product\10.2.0\server\bin;O:\app\PavelDart\product\11.1.0\db_1\bin;C:\WINDOWS\s
ystem32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\MySQL\Server\bin;c:\MySQL\Server\include;C:\Qt\3.3.4\bin


Название: Re: Компиляция в Виндовой консоли
Отправлено: pastor от Октябрь 21, 2009, 22:00
А на сам мейкфайл проекта взглянуть можно?


Название: Re: Компиляция в Виндовой консоли
Отправлено: PavelDart от Октябрь 21, 2009, 22:11
А на сам мейкфайл проекта взглянуть можно?

Код:
CC		=	gcc
CXX = g++
LEX = flex
YACC = byacc
CFLAGS = -mthreads -Wall -O2 -fno-exceptions -fno-rtti  -DUNICODE -DQT_DLL -DQT_THREAD_SUPPORT -DQT_NO_DEBUG
CXXFLAGS = -mthreads -Wall -O2 -fno-exceptions -fno-rtti  -DUNICODE -DQT_DLL -DQT_THREAD_SUPPORT -DQT_NO_DEBUG
LEXFLAGS =
YACCFLAGS =-d
INCPATH = -I"." -I"$(QTDIR)\include" -I"." -I"C:\Qt\3.3.4\mkspecs\win32-g++"
LINK = g++
LFLAGS = -Wl,-enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc -mthreads -Wl,-s -Wl,-subsystem,windows -e __Z19QtWinMainCRTStartupv
LIBS = -L"$(QTDIR)\lib" -lqtmain -lqt-mt -lkernel32 -luser32 -lgdi32 -lcomdlg32 -ladvapi32 -lshell32 -lole32 -loleaut32 -luuid -limm32 -lwinmm -lwsock32 -lwinspool
MOC = $(QTDIR)\bin\moc.exe
UIC = $(QTDIR)\bin\uic.exe
QMAKE = qmake
IDC = $(QTDIR)\bin\idc.exe
IDL = midl
ZIP = zip -r -9
DEF_FILE      =
COPY_FILE =       copy
COPY_DIR =       copy
DEL_FILE =       del
DEL_DIR =       rmdir
MOVE =       move
CHK_DIR_EXISTS = if not exist
MKDIR = mkdir
INSTALL_FILE= $(COPY_FILE)
INSTALL_DIR = $(COPY_DIR)

####### Output directory

OBJECTS_DIR = .
MOC_DIR = .

####### Files

HEADERS = add.ui.h \
ras.ui.h
SOURCES = main.cpp
OBJECTS = main.o \
add.o
FORMS = add.ui
UICDECLS = add.h
UICIMPLS = add.cpp
SRCMOC = moc_add.cpp
OBJMOC = moc_add.o
DIST =
TARGET = win_nano.exe

####### Implicit rules

.SUFFIXES: .cpp .cxx .cc .C .c

.cpp.o:
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $<

.cxx.o:
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $<

.cc.o:
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $<

.c.o:
$(CC) -c $(CFLAGS) $(INCPATH) -o $@ $<

####### Build rules

all: $(OBJECTS_DIR) $(MOC_DIR) $(TARGET)

$(TARGET):  $(UICDECLS) $(OBJECTS) $(OBJMOC)
$(LINK) $(LFLAGS) -o $(TARGET) $(OBJECTS) $(OBJMOC) $(LIBS)

mocables: $(SRCMOC)

$(OBJECTS_DIR):
@if not exist $(OBJECTS_DIR) $(MKDIR) $(OBJECTS_DIR)

$(MOC_DIR):
@if not exist $(MOC_DIR) $(MKDIR) $(MOC_DIR)

Makefile: win_nano.pro  C:\Qt\3.3.4\mkspecs\win32-g++\qmake.conf
$(QMAKE) -o Makefile win_nano.pro
qmake:
@$(QMAKE) -o Makefile win_nano.pro

dist:
$(ZIP) .zip .pro $(SOURCES) $(HEADERS) $(DIST) $(FORMS)

clean:
-$(DEL_FILE) main.o
-$(DEL_FILE) add.o
-$(DEL_FILE) moc_add.cpp
-$(DEL_FILE) moc_add.o
-$(DEL_FILE) add.h
-$(DEL_FILE) add.cpp
-$(DEL_FILE) $(TARGET)


####### Compile

main.o: main.cpp

add.h: add.ui
$(UIC) add.ui -o add.h

add.cpp: add.h add.ui add.ui.h
$(UIC) add.ui -i add.h -o add.cpp

add.o: add.cpp add.ui.h \
add.h

moc_add.o: moc_add.cpp  add.h

moc_add.cpp: $(MOC) add.h
$(MOC) add.h -o moc_add.cpp

####### Install

install: 

uninstall: 


Название: Re: Компиляция в Виндовой консоли
Отправлено: pastor от Октябрь 22, 2009, 00:59
А что за операционка? Если попробовать отключить антивирус?

имхо тут дело не в Qt, а в системе


Название: Re: Компиляция в Виндовой консоли
Отправлено: kuzulis от Октябрь 22, 2009, 07:28
Всем доброго времени!

У меня тоже не компилятся проекты, после того, как я установил себе SDK 2009.04 для Windows.

После запуска батника qtenv.bat - в переменных появляются пути, но вместо символа ';' стоит букфа 'ж'  :)

В общем я сделал (в части путей) всё так, как у меня было при установленной ранее Qt4.1.1 - но почему-то make не видится, не пойму в чем вся соль...

Вопрос, а не влияет ли на всё это глубина вложенности путей куда установлен SDK и наименокания каталогов на русском языке?

ЗЫ: работаю из под юзера а не админа.



Название: Re: Компиляция в Виндовой консоли
Отправлено: Пантер от Октябрь 22, 2009, 11:29
В путях не должно быть пробелов и символов кирилицы.


Название: Re: Компиляция в Виндовой консоли
Отправлено: kuzulis от Октябрь 22, 2009, 11:49
Цитировать
В путях не должно быть пробелов и символов кирилицы.
Хм, тогда я не понимаю в чем проблема с поиском make ?

ааа... понял вроде почему...  - полазил по каталогам с установленной ранее Qt4.1.1 обнаружил в ..\Qt\4.1.1\bin\
батник make.bat  с таким содержимым:
Цитировать
@echo off
mingw32-make %*

Скорее всего в новых SDK или нет этого файла или его содержимое завязано на MS VS , приду вечером проверю :) (пока не могу проверить)


И еще вопрос: а для чего в SDK дублируются библиотеки Qt (*.dll) в разных каталогах?
Например в ../2009.04/bin и в ../2009.04/qt/bin  о_О


Название: Re: Компиляция в Виндовой консоли
Отправлено: Пантер от Октябрь 22, 2009, 13:26
В ../2009.04/bin для работы креатора.


Название: Re: Компиляция в Виндовой консоли
Отправлено: PavelDart от Октябрь 22, 2009, 14:04


 [PavelDart] E:\ALT_media_space\client_nano\win_nano$ mingw32-make
makefile:89: warning: overriding commands for target `.'
makefile:86: warning: ignoring old commands for target `.'
C:\Qt\3.3.4\bin\uic.exe add.ui -o add.h
process_begin: CreateProcess(NULL, C:\Qt\3.3.4\bin\uic.exe add.ui -o add.h, ...) failed.
make (e=2): ═х єфрхЄё  эрщЄш єърчрээ√щ Їрщы.
mingw32-make: *** [add.h] Error 2


Не обнаружил в пути  C:\Qt\3.3.4\bin\uic.exe этого файла. Думал что аваст удаляет, приняв за вирус - переустановил с отключенным антивирусом. Нет. В логах установки Qt не упоминается этот файл, есть только uic.h и uic.pro. 
Зачем uic.exe нужен и отсутствие файла  может как-то зависить от конфигурирования  Qt, так как она у меня не сконфигурирована.


Название: Re: Компиляция в Виндовой консоли
Отправлено: lit-uriy от Октябрь 22, 2009, 14:42
>>Зачем uic.exe нужен
Он из файлов ui (User Inteface) делает С++ исходник

Но так в Qt 4, может я чего и путаю, но вроде в Qt3 был другой подход


Название: Re: Компиляция в Виндовой консоли
Отправлено: BaltikS от Октябрь 22, 2009, 15:24
Нет, ничего не путаешь... В 3 тоже самое, только генерятся они по-другому...


Название: Re: Компиляция в Виндовой консоли
Отправлено: Alex Custov от Октябрь 22, 2009, 16:05
Не обнаружил в пути  C:\Qt\3.3.4\bin\uic.exe этого файла. Думал что аваст удаляет, приняв за вирус - переустановил с отключенным антивирусом. Нет. В логах установки Qt не упоминается этот файл, есть только uic.h и uic.pro.  
Зачем uic.exe нужен и отсутствие файла  может как-то зависить от конфигурирования  Qt, так как она у меня не сконфигурирована.

Qt3 AFAIR сама компилируется на хосте, когда ты её пытаешься установить. Она компилировалась? В установленном каталоге с Qt где-то в подкаталогах должны быть экзешники moc, uic, qmake. Если их нет, значит ты неправильно установил SDK. Как конкретно ты его ставил?


Название: Re: Компиляция в Виндовой консоли
Отправлено: PavelDart от Октябрь 22, 2009, 20:47

Qt3 AFAIR сама компилируется на хосте, когда ты её пытаешься установить. Она компилировалась? В установленном каталоге с Qt где-то в подкаталогах должны быть экзешники moc, uic, qmake. Если их нет, значит ты неправильно установил SDK. Как конкретно ты его ставил?

 qt-win- :-X com :-X -3.3.4 - Запустил батник, запустил exe-шник.


Название: Re: Компиляция в Виндовой консоли
Отправлено: pastor от Октябрь 22, 2009, 22:28
Так компиляция Qt завершилась или нет??


Название: Re: Компиляция в Виндовой консоли
Отправлено: PavelDart от Октябрь 22, 2009, 22:35
Так компиляция Qt завершилась или нет??
На конфигурировании ошибка.


Название: Re: Компиляция в Виндовой консоли
Отправлено: pastor от Октябрь 22, 2009, 22:44
На конфигурировании ошибка.

Если Qt не собрана, о какой компиляции проекта может идти речь?

Какая ось используется? Какие опции конфигурации использовались (покажи configure.cache)? Еще раз покажи что пишет конфигуратор. Выключи антивирус или другое подобное ПО. Удали предыдущую установку и повтори конфигурацию.


Название: Re: Компиляция в Виндовой консоли
Отправлено: PavelDart от Октябрь 23, 2009, 07:57
Ошибка:
copy qmake.exe ..\bin\qmake.exe
‘ª®¯¨à®¢ ­® ä ©«®¢:         1.
Building qmake failed, return code 1
mingw32-make: [qmake.exe] Error 1 (ignored)
The configure process failed.



configure.cache:
-release
-shared
-thread
-enable-network
-enable-canvas
-enable-table
-enable-xml
-enable-opengl
-enable-sql
-enable-iconview
-enable-workspace
-enable-styles
-enable-dialogs
-enable-widgets
-enable-tools
-enable-kernel
-no-sql-mysql
-no-sql-oci
-no-sql-odbc
-no-sql-psql
-no-sql-tds
-no-sql-db2
-no-sql-sqlite
-no-sql-ibase
-accessibility
-big-codecs
-no-tablet
-no-stl
-no-exceptions
-no-rtti
-qt-imgfmt-png
-qt-png
-qt-imgfmt-jpeg
-qt-jpeg
-plugin-imgfmt-mng
-qt-mng
-no-gif
-qt-style-windows
-qt-style-windowsxp
-plugin-style-motif
-plugin-style-platinum
-plugin-style-motifplus
-plugin-style-cde
-plugin-style-sgi


Конечно пробовал без антивируса и без виндового брендмауэра.


Название: Re: Компиляция в Виндовой консоли
Отправлено: Пантер от Октябрь 23, 2009, 11:32
Каталог ..\bin\ существует? Права есть? Если там есть qmake.exe, попробуй его удалить и заново скомпилить.


Название: Re: Компиляция в Виндовой консоли
Отправлено: PavelDart от Октябрь 28, 2009, 13:19
Каталог ..\bin\ существует? Права есть? Если там есть qmake.exe, попробуй его удалить и заново скомпилить.

bin имеется в виду директория qt?
Решил здесь продолжить тему.
Сейчас пробовал установить систему на другой машине (винда чистая) - та же  ошибка.


Название: Re: Компиляция в Виндовой консоли
Отправлено: Пантер от Октябрь 28, 2009, 17:59
qt\bin есть каталог?


Название: Re: Компиляция в Виндовой консоли
Отправлено: pastor от Октябрь 28, 2009, 18:10
Сейчас пробовал установить систему на другой машине (винда чистая) - та же  ошибка.

А что за винда стоит? Под кем работаешь?


Название: Re: Компиляция в Виндовой консоли
Отправлено: PavelDart от Октябрь 28, 2009, 18:31
qt\bin есть каталог?
Да. Есть ещё каталог qmake. qmake.exe нет нигде.
Цитировать
А что за винда стоит? Под кем работаешь?

XP SP2. Пользователь со всеми правами.