crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )


  Ответ в Qt+CodeBlocks
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
Теги
Выровнять по центру
Ссылка на тему
Ссылка на сообщение
Скрытый текст
Сокращение
Код с подсветкой
Offtopic
 
Удалить форматирование
Спец. элементы
Шрифт
Размер
 
Цвет шрифта
 
Отменить ввод
Вернуть ввод
Полужирный
Курсив
Подчеркнутый
 
 
Смайлики
Вставить изображение
Вставить адрес электронной почты
Цитата
Код
Раскрывающийся текст
 
Увеличить отступ
По левому краю
По центру
По правому краю
Вставить список
Вставить список

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
Fedcomp Дата 24.10.2010, 17:06
  В консоли скомпилился ...

можно ли какой либо простой пример, чтобы проверить отрабатывается ли qmake при компиле?
alex977 Дата 24.10.2010, 14:33
  Простейший пример.

hello.cpp:

#include <QtGui>
int main(int argc, char** argv)
{
    QApplication app(argc, argv);
    QLabel lbl("Hello, World !");
    lbl.show();
    return app.exec();
}


hello.pro:

TEMPLATE = app
SOURCES     = hello.cpp
win32:TARGET     = ../Hello


Fedcomp Дата 24.10.2010, 14:00
  Можно пример самого простого приложения на Qt? и хотелось бы узнать как компилировать вручную этот проект.
Litkevich Yuriy Дата 24.10.2010, 13:39
  Прочитай тут, проверь pro-файл
Fedcomp Дата 24.10.2010, 13:16
  Дело сдвинулось, нашел ваш пост по этому поводу http://www.forum.crossplatform.ru/index.ph...post&p=8828
Действительно у меня стоял борландовский C++, убрал его из переменных сред подключился mingw (на самом деле не подключился, я скопировал mingw32-make.exe в файл с названием make.exe, теперь из командной строки запускается как и положено mingw)
Поидее теперь qmake должен работать нормально. Значит проблема не в этом.
Дело в том что я пытаюсь пробный проект скомпилить, сделал форму в Qt creator'е, и пытаюсь её подсоединить к проекту.
Есть
main.cpp
#include <QApplication>
#include <QDialog>

using namespace std;

#include "forms/mainform/mainfrm.h"

int main(int argc, char* argv[])
{
    QApplication app(argc, argv);

    Ui::mainfrm ui;
    QDialog *dialog = new QDialog;
    ui.setupUi(dialog);

    dialog->show();

    return app.exec();
}

Есть
forms/mainform/mainfrm.h
#ifndef MAINFRM_H
#define MAINFRM_H

#include <QMainWindow>

namespace Ui {
    class mainfrm;
}

class mainfrm : public QMainWindow
{
    Q_OBJECT

public:
    explicit mainfrm(QWidget *parent = 0);
    ~mainfrm();

private:
    Ui::mainfrm *ui;
};

#endif // MAINFRM_H

Есть
forms/mainform/mainfrm.cpp
#include "mainfrm.h"
#include "ui_mainfrm.h"

mainfrm::mainfrm(QWidget *parent) : QMainWindow(parent),ui(new Ui::mainfrm)
{
    ui->setupUi(this);
}

mainfrm::~mainfrm()
{
    delete ui;
}


При компиляции получаю ошибку
main.cpp|12|error: aggregate 'Ui::mainfrm ui' has incomplete type and cannot be defined|

Кстати говоря #include "ui_mainfrm.h" не создается почему то ...
Litkevich Yuriy Дата 24.10.2010, 12:03
 
Цитата(Fedcomp @ 24.10.2010, 14:38) *
Т.е достаточно сделать Makefile с помощью QT и заставить кодеблоки юзать этот мейкфайл?
и при этом qmake при необходимости будет запускаться сам, я правильно все понял?
да.

Цитата(Fedcomp @ 24.10.2010, 14:38) *
Как я понял компилятор не знает что делать с FORCE
не компилятор а программа make

Я не знаю, что делает CodeBlocks, нужно просто скомандовать
make - будет собирать и релиз и отладку, но может перетереть предыдущий вариант (например релизный), т.к. зависит от настроек проекта
или
make debug - для сборки отладочной версии приложения
или
make release - для сборки релизной версии приложения
Fedcomp Дата 24.10.2010, 11:38
  Т.е достаточно сделать Makefile с помощью QT и заставить кодеблоки юзать этот мейкфайл?
и при этом qmake при необходимости будет запускаться сам, я правильно все понял?

Делаю так,
cmd.exe=>
D:\non_users\projecT\GSC\develope\server_configurator>qmake -project

D:\non_users\projecT\GSC\develope\server_configurator>qmake "server_configurator
.pro"
WARNING: d:\non_users\projecT\GSC\develope\server_configurator\server_configurat
or.pro:7: Unescaped backslashes are deprecated.
WARNING: d:\non_users\projecT\GSC\develope\server_configurator\server_configurat
or.pro:7: Unescaped backslashes are deprecated.
WARNING: d:\non_users\projecT\GSC\develope\server_configurator\server_configurat
or.pro:7: Unescaped backslashes are deprecated.

D:\non_users\projecT\GSC\develope\server_configurator>

Появляются мейк файлы (Makefile, Makefile.release, Makefile.debug)

Дальше захожу в CodeBlocks, запускаю проект и в свойствах проекта нажимаю "This is custom makefile" нажимаю ок.
Жму F9 (т.е компиляцию и запуск)
Получаю
It seems that this project has no been built yet.
Do you want to build it now?

(что нормально, т.е кодеблок хочет его компильнуть)
Нажимаю yes и получаю
-------------- Build: Debug in srvconfig ---------------

Using makefile: Makefile
MAKE Version 5.2  Copyright (c) 1987, 1998 Inprise Corp.
Fatal: 'FORCE' does not exist - don't know how to make it
Process terminated with status 1 (0 minutes, 0 seconds)
0 errors, 0 warnings

Смотрю в makefile и вижу
debug: $(MAKEFILE).Debug FORCE
    $(MAKE) -f $(MAKEFILE).Debug
debug-make_default: $(MAKEFILE).Debug FORCE
    $(MAKE) -f $(MAKEFILE).Debug 
debug-make_first: $(MAKEFILE).Debug FORCE
    $(MAKE) -f $(MAKEFILE).Debug first
debug-all: $(MAKEFILE).Debug FORCE
    $(MAKE) -f $(MAKEFILE).Debug all

И много подобных строк. Как я понял компилятор не знает что делать с FORCE
Что я сделал не так?
Litkevich Yuriy Дата 23.10.2010, 22:05
 
Цитата(Fedcomp @ 23.10.2010, 23:51) *
В Qt designer сборка проходит абсолютно прозрачно, как и что он в это время делает не понятно.
В дизайнере сборка вообще не происходит. Это всего лишь инструмент для визуального создания виджетов/окон

Цитата(Fedcomp @ 23.10.2010, 23:51) *
Во вторых не понятен способ ручной компиляции Qt проектов.

1) qmake myproject.pro
2) make
...
N) make

1 - программа qmake создаёт make-файлы на основе pro-файла
2 - программа make читает make-файлы и исполняет инструкции записанные в них, в отличие от bat/shell-файлов логика обработки make-файлов специфичная, т.к. позволяет отслеживать зависимости команд (например, нужно ли перекомпилировать такой-то файл или он не изменялся со времени последней компиляции)
N - тоже что и №2, так как в make-файле есть цель в виде pro-файла. Т.е. если pro-файл изменился, программа make это заметит и вызовит qmake автоматически.

П.С.
1) иногда всё таки приходится повторно вызывать qmake явно (руками), это когда, например, класс наследник QObject сначала не содержал макрос Q_OBJECT, а потом этот макрос появился.
2) moc вручную не вызывают, программа qmake записывает соответствующий вызов в make-файл
Kagami Дата 23.10.2010, 21:07
  Когда я пару лет назад работал в Code::Blocks, то для работы с Qt я использовал плагин QtWorkbench. Впрочем он был не совсем удобен, и насколько я могу судить он не очень активно развивается. После выхода первой версии Qt Сreator я перешел на него и не жалею. Рекомендую на него посмотреть ;)
Fedcomp Дата 23.10.2010, 20:51
  Всем привет.
Хочу чтобы CodeBlocks на автомате (по клавише F9 т.е компиляция) проходился по полному циклу qmake и потом компиляция через mingw.
Но возникло много трудностей. Во первых я новичок, процессы компиляции понимаю крайне плохо (лишь знаю что в .o файлах компилируется код, затем линкером объединяется в экзешник, ну ещё что то слышал про makefile, но не знаю как они работают, и знаю что Qt использует moc для того чтобы добавить к C++ упрощенный вид функций (т.е препроцессор moc делает б0льшую работу за программиста, собственно превращая псевдо slots и signals в настоящий код понятный компилятору))
Во вторых не понятен способ ручной компиляции Qt проектов. В Qt designer сборка проходит абсолютно прозрачно, как и что он в это время делает не понятно.
Пробовал порыться в гугле, нашел qmake -project (рекурсивно проходится по текущему каталогу и составляет qt проект) и qmake "имя_проекта.pro" который проходится moc'ом как я понял.
Так вот такая задача, хочу чтобы CodeBlocks автоматически запускал qmake перед компиляцией, это возможно?
Просмотр темы полностью (откроется в новом окне)
RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 10.7.2025, 13:05