Duvidas ao usar subproject, projeto compila mas quando um faz referencia a outro não compila
-
É um projeto simples com finalidade de aprender a usar o subprojetos.
Erros q acontecem:
C:\Projetos-Qt\testeSubdir-build-desktop-Qt_4_8_0_for_Desktop\mainwindow/../../testeSubdir/mainwindow/mainwindow.cpp:15: undefined reference tofunctions::functions()' debug/mainwindow.o:C:\Projetos-Qt\testeSubdir-build-desktop-Qt_4_8_0_for_Desktop\mainwindow/../../testeSubdir/mainwindow/mainwindow.cpp:31: undefined reference to
functions::sqrt(int)'fontes:
functions.pro
@HEADERS +=
functions.hSOURCES +=
functions.cpp
main.cpp
@functions.h
@#ifndef FUNCTIONS_H
#define FUNCTIONS_H#include <QObject>
class functions : public QObject
{
Q_OBJECT
public:
functions();
qint32 sqrt(qint32 i1);
signals:public slots:
};
#endif // FUNCTIONS_H
@functions.cpp
@#include "functions.h"
functions::functions()
{
}qint32 functions::sqrt(qint32 i1)
{
return i1 * i1;
}
@@QT += gui
INCLUDEPATH += ../functions
HEADERS +=
mainwindow.hSOURCES +=
mainwindow.cpp
main.cppOTHER_FILES +=
../functions/functions.pro
@mainwindow.h
@#ifndef MAINWINDOW_H
#define MAINWINDOW_H#include <QWidget>
class QLineEdit;
class QPushButton;
class QLabel;
class QHBoxLayout;
class functions;class mainWindow : public QWidget
{
Q_OBJECT
private:
QLineEdit *_editValor;
QPushButton *_btnSqrt;
QLabel *_lblResult;QHBoxLayout *mainLayout; functions *fs;
public:
explicit mainWindow(QWidget *parent = 0);signals:
private slots:
void executar();
public slots:};
#endif // MAINWINDOW_H
@mainwindow.cpp
@
#include "mainwindow.h"
#include <QLabel>
#include<QPushButton>
#include<QLineEdit>
#include <QHBoxLayout>#include "functions.h"
mainWindow::mainWindow(QWidget *parent) :
QWidget(parent)
{
_editValor = new QLineEdit;
_btnSqrt = new QPushButton;
_lblResult = new QLabel("Result");
fs = new functions;mainLayout = new QHBoxLayout(); mainLayout->addWidget(_editValor); mainLayout->addWidget(_btnSqrt); mainLayout->addWidget(_lblResult); setLayout(mainLayout); connect(_btnSqrt, SIGNAL(clicked()), this, SLOT(executar()));
}
void mainWindow::executar(){
qint32 i1,i2;i1 = _editValor->text().toInt(); i2 = fs->sqrt(i1); _lblResult->setText(QString::number(i2));
}
@main.cpp do subprojeto mainwindow
@#include <QApplication>
#include <QStringList>
#include <QDebug>
#include "mainwindow.h"int main(int argc, char *argv[])
{
QApplication app(argc, argv);
mainWindow *mainW = new mainWindow();
qDebug() << 0;
mainW->show();
return app.exec();
}
@ -
da uma olhada nesse projeto:
http://www.4shared.com/rar/ZzZ_fY8W/balanca.html
antes de compilar veja o arquivo: "leia antes de compilar.txt"
qualquer coisa pergunta...
-
Ola, Rodrigocg, acho que voce se enganou, o link que passou só tem um programa ja compilado e sem o txt que tu menciona
-
desculpe, passei o link errado...
http://www.4shared.com/rar/0N4xR644/BalancaGF.html -
Obrigado Rodrigo irei estudar estes fontes
-
Só comentando o que voce publicou, em um projeto de subprojects voce tem que ter um com a funcao "main" e que seja do tipo app... e em cada subproject vc tem que especificar qual vai ser o resultado da compilacao... se eh uma dll ou um aplicativo... No seu projeto functions.pro e mainwindow.pro voce nao trabalhou isso direito...
procure sobre o comando $$PWD ele especifica o diretorio principal do projeto, e a variavel DESTDIR, que especifica o local onde os binarios serao salvos aposa compilacao...
vc tambem pode especivicar $$DESTDIR para, por exemplo declarar bibliotecas compiladas pelo projeto.