Several fixes for compilation with gcc (doesn't link)

This commit is contained in:
eelke 2017-08-22 12:45:45 +02:00
parent a2f39692a2
commit dd9906dbd8
20 changed files with 379 additions and 262 deletions

View file

@ -58,13 +58,13 @@ BackupFormatModel::BackupFormatModel(QObject *parent)
//} //}
int BackupFormatModel::rowCount(const QModelIndex &parent) const int BackupFormatModel::rowCount(const QModelIndex &) const
{ {
int size = g_BackupFormats.size(); int size = g_BackupFormats.size();
return size; return size;
} }
int BackupFormatModel::columnCount(const QModelIndex &parent) const int BackupFormatModel::columnCount(const QModelIndex &) const
{ {
return 3; return 3;
@ -80,13 +80,13 @@ QVariant BackupFormatModel::data(const QModelIndex &index, int role) const
if (role == Qt::DisplayRole) { if (role == Qt::DisplayRole) {
const auto &item = g_BackupFormats.at(row); const auto &item = g_BackupFormats.at(row);
switch (col) { switch (col) {
case Column::Short: case ColumnShort:
result = item.shortFlag; result = item.shortFlag;
break; break;
case Column::Long: case ColumnLong:
result = item.longFlag; result = item.longFlag;
break; break;
case Column::Description: case ColumnDescription:
result = item.description; result = item.description;
break; break;
} }

View file

@ -8,7 +8,7 @@ class BackupFormatModel : public QAbstractListModel
Q_OBJECT Q_OBJECT
public: public:
enum class Column { Short=1, Long=0, Description=2 }; enum Column { ColumnShort=1, ColumnLong=0, ColumnDescription=2 };
explicit BackupFormatModel(QObject *parent); explicit BackupFormatModel(QObject *parent);

View file

@ -1,7 +1,9 @@
#ifndef EXPECTED_H #ifndef EXPECTED_H
#define EXPECTED_H #define EXPECTED_H
#include <exception> #include <stdexcept>
#include <typeinfo>
#include <utility>
template <typename T> template <typename T>
class Expected { class Expected {
@ -168,13 +170,13 @@ public:
Expected(const Expected& rhs) Expected(const Expected& rhs)
: m_valid(rhs.m_valid) : m_error(rhs.m_error)
, m_error(rhs.m_error) , m_valid(rhs.m_valid)
{} {}
Expected(Expected<void> &&rhs) Expected(Expected<void> &&rhs)
: m_valid(rhs.m_valid) : m_error(std::move(rhs.m_error))
, m_error(std::move(rhs.m_error)) , m_valid(rhs.m_valid)
{} {}
~Expected() ~Expected()

View file

@ -8,11 +8,11 @@ QT -= gui
TARGET = core TARGET = core
TEMPLATE = lib TEMPLATE = lib
CONFIG += staticlib c++11 CONFIG += staticlib c++14
INCLUDEPATH += C:\prog\include C:\VSproj\boost_1_63_0 INCLUDEPATH += C:\prog\include C:\VSproj\boost_1_63_0
DEFINES += WIN32_LEAN_AND_MEAN NOMINMAX DEFINES += WIN32_LEAN_AND_MEAN NOMINMAX
LIBS += /LIBPATH:C:\VSproj\boost_1_63_0\stage\lib /LIBPATH:c:\prog\lib\ libpq.lib fmt.lib User32.lib ws2_32.lib #LIBS += /LIBPATH:C:\VSproj\boost_1_63_0\stage\lib /LIBPATH:c:\prog\lib\ libpq.lib fmt.lib User32.lib ws2_32.lib
# The following define makes your compiler emit warnings if you use # The following define makes your compiler emit warnings if you use

View file

@ -9,6 +9,8 @@
#include <QScrollBar> #include <QScrollBar>
#include <QStandardPaths> #include <QStandardPaths>
#include <windows.h>
BackupDialog::BackupDialog(QWidget *parent) : BackupDialog::BackupDialog(QWidget *parent) :
QDialog(parent), QDialog(parent),
ui(new Ui::BackupDialog) ui(new Ui::BackupDialog)
@ -81,7 +83,7 @@ void BackupDialog::on_process_errorOccurred(QProcess::ProcessError error)
msg = tr("Failed to start"); msg = tr("Failed to start");
break; break;
case 1: case 1:
msg = tr("Crasged"); msg = tr("Crashed");
break; break;
case 2: case 2:
msg = tr("Timedout"); msg = tr("Timedout");
@ -175,6 +177,50 @@ void BackupDialog::on_btnStart_clicked()
setParams(arguments); setParams(arguments);
// BOOL res = AllocConsole();
// if (!res) {
// DWORD error = GetLastError();
// QMessageBox::critical(this, "pglab", tr("AllocConsole failed %1").arg(error), QMessageBox::Close);
// }
// HANDLE out = GetStdHandle(STD_OUTPUT_HANDLE);
// DWORD written;
// res = WriteConsoleOutputCharacter(out, L"Hello, world!\n", 14, {0, 0}, &written);
// PROCESS_INFORMATION proc_info;
// STARTUPINFO startup_info;
// memset(&startup_info, 0, sizeof(startup_info));
// startup_info.cb = sizeof(startup_info);
// startup_info.lpReserved;
// startup_info.lpDesktop;
// startup_info.lpTitle;
// startup_info.dwX;
// startup_info.dwY;
// startup_info.dwXSize;
// startup_info.dwYSize;
// startup_info.dwXCountChars;
// startup_info.dwYCountChars;
// startup_info.dwFillAttribute;
// startup_info.dwFlags = STARTF_USESTDHANDLES;
// startup_info.wShowWindow;
// startup_info.cbReserved2;
// startup_info.lpReserved2;
// startup_info.hStdInput = GetStdHandle(STD_INPUT_HANDLE);
// startup_info.hStdOutput = GetStdHandle(STD_OUTPUT_HANDLE);
// startup_info.hStdError = GetStdHandle(STD_ERROR_HANDLE);
// res = CreateProcess(
// LR"_(C:\Prog\build-conoutputtest-Desktop_Qt_5_8_0_MSVC2015_32bit2-Debug\debug\conoutputtest.exe)_",
// NULL, // _Inout_opt_ LPTSTR lpCommandLine,
// NULL, // _In_opt_ LPSECURITY_ATTRIBUTES lpProcessAttributes,
// NULL, // _In_opt_ LPSECURITY_ATTRIBUTES lpThreadAttributes,
// TRUE,
// 0, // _In_ DWORD dwCreationFlags,
// NULL, // _In_opt_ LPVOID lpEnvironment,
// NULL, // _In_opt_ LPCTSTR lpCurrentDirectory,
// &startup_info, // _In_ LPSTARTUPINFO lpStartupInfo,
// &proc_info // _Out_ LPPROCESS_INFORMATION lpProcessInformation
// );
// QString program = R"_(C:\prog\build-conoutputtest-Desktop_Qt_5_8_0_MSVC2015_32bit2-Debug\debug\conoutputtest.exe)_"; // QString program = R"_(C:\prog\build-conoutputtest-Desktop_Qt_5_8_0_MSVC2015_32bit2-Debug\debug\conoutputtest.exe)_";
// QStringList arguments; // QStringList arguments;
// arguments << "/C" << "DIR /S c:\\"; // arguments << "/C" << "DIR /S c:\\";
@ -188,6 +234,13 @@ void BackupDialog::on_btnStart_clicked()
auto p = new QProcess(this); auto p = new QProcess(this);
ConnectTo(p); ConnectTo(p);
p->setProcessEnvironment(env); p->setProcessEnvironment(env);
p->setCreateProcessArgumentsModifier([] (QProcess::CreateProcessArguments *args)
{
args->flags |= CREATE_NEW_CONSOLE;
args->flags &= ~DETACHED_PROCESS;
args->startupInfo->dwFlags &= ~STARTF_USESTDHANDLES;
});
p->start(program, arguments); p->start(program, arguments);
} }
@ -221,3 +274,4 @@ void BackupDialog::on_selectDestination_clicked()
ui->editFilename->setText(QDir::toNativeSeparators(fn)); ui->editFilename->setText(QDir::toNativeSeparators(fn));
} }
} }

View file

@ -78,6 +78,8 @@ void DatabaseWindow::connectionStateChanged(ASyncDBConnection::State state)
case ASyncDBConnection::State::CancelSend: case ASyncDBConnection::State::CancelSend:
status_str = tr("Query geannuleerd"); status_str = tr("Query geannuleerd");
break; break;
case ASyncDBConnection::State::Terminating:
break;
} }
// addLog(status_str); // addLog(status_str);
statusBar()->showMessage(status_str); statusBar()->showMessage(status_str);

View file

@ -26,16 +26,16 @@ void PgAuthIdContainer::load(const Pgsql::Result &res)
bool with_rls = (m_catalogue->serverVersion() >= 90500); bool with_rls = (m_catalogue->serverVersion() >= 90500);
for (auto row : res) { for (auto row : res) {
PgAuthId v; PgAuthId v;
v.oid = row.get(0); // InvalidOid; v.oid << row.get(0); // InvalidOid;
v.name = row.get(1); v.name << row.get(1);
v.super = row.get(2); v.super << row.get(2);
v.inherit = row.get(3); v.inherit << row.get(3);
v.createRole = row.get(4); v.createRole << row.get(4);
v.createDB = row.get(5); v.createDB << row.get(5);
v.canlogin = row.get(6); v.canlogin << row.get(6);
v.replication = row.get(7); v.replication << row.get(7);
v.connLimit = row.get(8); v.connLimit << row.get(8);
v.validUntil = row.get(9); v.validUntil << row.get(9);
v.bypassRls = with_rls ? (bool)row.get(10) : false; v.bypassRls = with_rls ? (bool)row.get(10) : false;
// QDateTime // QDateTime
m_container.push_back(v); m_container.push_back(v);

View file

@ -18,17 +18,17 @@ void PgDatabaseContainer::load(const Pgsql::Result &res)
m_container.reserve(n_rows); m_container.reserve(n_rows);
for (auto row : res) { for (auto row : res) {
PgDatabase v; PgDatabase v;
v.oid = row.get(0); // InvalidOid; v.oid << row.get(0); // InvalidOid;
v.name = row.get(1); v.name << row.get(1);
v.dba = row.get(2); // owner? v.dba << row.get(2); // owner?
v.encoding = row.get(3); v.encoding << row.get(3);
v.collate = row.get(4); v.collate << row.get(4);
v.ctype = row.get(5); v.ctype << row.get(5);
v.isTemplate = row.get(6); v.isTemplate << row.get(6);
v.allowConn = row.get(7); v.allowConn << row.get(7);
v.connLimit = row.get(8); v.connLimit << row.get(8);
v.tablespace = row.get(9); v.tablespace << row.get(9);
v.acl = row.get(10); v.acl << row.get(10);
m_container.push_back(v); m_container.push_back(v);
} }
std::sort(m_container.begin(), m_container.end()); std::sort(m_container.begin(), m_container.end());

View file

@ -48,37 +48,37 @@ void PgTypeContainer::load(const Pgsql::Result &res)
m_container.reserve(n_rows); m_container.reserve(n_rows);
for (auto row : res) { for (auto row : res) {
PgType v; PgType v;
v.oid = row.get(0); // InvalidOid; v.oid << row.get(0); // InvalidOid;
v.typname = row.get(1); //.asQString(); //. operator QString(); // "name";"NO" v.typname << row.get(1); //. operator QString(); // "name";"NO"
v.typnamespace = row.get(2); // InvalidOid;//"oid";"NO" v.typnamespace << row.get(2); // InvalidOid;//"oid";"NO"
v.typowner = row.get(3); // InvalidOid;//"oid";"NO" v.typowner << row.get(3); // InvalidOid;//"oid";"NO"
v.typlen = row.get(4); // -1;//"smallint";"NO" v.typlen << row.get(4); // -1;//"smallint";"NO"
v.typbyval = row.get(5); // false;//"boolean";"NO" v.typbyval << row.get(5); // false;//"boolean";"NO"
v.typtype = row.get(6);//""char"";"NO" v.typtype << row.get(6);//""char"";"NO"
v.typcategory = row.get(7);//""char"";"NO" v.typcategory << row.get(7);//""char"";"NO"
v.typispreferred = row.get(8); //false;//"boolean";"NO" v.typispreferred << row.get(8); //false;//"boolean";"NO"
v.typisdefined = row.get(9); //false;//"boolean";"NO" v.typisdefined << row.get(9); //false;//"boolean";"NO"
v.typdelim = row.get(10); //""char"";"NO" v.typdelim << row.get(10); //""char"";"NO"
v.typrelid = row.get(11); // InvalidOid;//"oid";"NO" v.typrelid << row.get(11); // InvalidOid;//"oid";"NO"
v.typelem = row.get(12); // InvalidOid;//"oid";"NO" v.typelem << row.get(12); // InvalidOid;//"oid";"NO"
v.typarray = row.get(13); // InvalidOid;//"oid";"NO" v.typarray << row.get(13); // InvalidOid;//"oid";"NO"
v.typinput = row.get(14).asQString();//regproc";"NO" v.typinput << row.get(14);//regproc";"NO"
v.typoutput = row.get(15).asQString();//"regproc";"NO" v.typoutput << row.get(15);//"regproc";"NO"
v.typreceive = row.get(16).asQString();//"regproc";"NO" v.typreceive << row.get(16);//"regproc";"NO"
v.typsend = row.get(17).asQString();//"regproc";"NO" v.typsend << row.get(17);//"regproc";"NO"
v.typmodin = row.get(18).asQString();//"regproc";"NO" v.typmodin << row.get(18);//"regproc";"NO"
v.typmodout = row.get(19).asQString();//"regproc";"NO" v.typmodout << row.get(19);//"regproc";"NO"
v.typanalyze = row.get(20).asQString();//"regproc";"NO" v.typanalyze << row.get(20);//"regproc";"NO"
v.typalign = row.get(21); // //""char"";"NO" v.typalign << row.get(21); // //""char"";"NO"
v.typstorage = row.get(22); //""char"";"NO" v.typstorage << row.get(22); //""char"";"NO"
v.typnotnull = row.get(23); //"boolean";"NO" v.typnotnull << row.get(23); //"boolean";"NO"
v.typbasetype = row.get(24); //"oid";"NO" v.typbasetype << row.get(24); //"oid";"NO"
v.typtypmod = row.get(25); //-1;//"integer";"NO" v.typtypmod << row.get(25); //-1;//"integer";"NO"
v.typndims = row.get(26); //"integer";"NO" v.typndims << row.get(26); //"integer";"NO"
v.typcollation = row.get(27); //InvalidOid;//"oid";"NO" v.typcollation << row.get(27); //InvalidOid;//"oid";"NO"
v.typdefaultbin = row.get(28).asQString();//"pg_node_tree";"YES" v.typdefaultbin << row.get(28);//"pg_node_tree";"YES"
v.typdefault = row.get(29).asQString();//"text";"YES" v.typdefault << row.get(29);//"text";"YES"
v.typacl = row.get(30).asQString();//"ARRAY";"YES" v.typacl << row.get(30);//"ARRAY";"YES"
m_container.push_back(v); m_container.push_back(v);
} }
std::sort(m_container.begin(), m_container.end()); std::sort(m_container.begin(), m_container.end());

View file

@ -39,12 +39,12 @@ void PgsqlDatabaseCatalogue::loadInfo(Pgsql::Connection &conn)
Pgsql::Result r = conn.query("SHOW server_version_num"); Pgsql::Result r = conn.query("SHOW server_version_num");
if (r && r.resultStatus() == PGRES_TUPLES_OK) if (r && r.resultStatus() == PGRES_TUPLES_OK)
if (r.rows() == 1) if (r.rows() == 1)
m_serverVersion = r.get(0, 0); m_serverVersion << r.get(0, 0);
r = conn.query("SELECT version()"); r = conn.query("SELECT version()");
if (r && r.resultStatus() == PGRES_TUPLES_OK) if (r && r.resultStatus() == PGRES_TUPLES_OK)
if (r.rows() == 1) if (r.rows() == 1)
m_serverVersionString = r.get(0, 0); m_serverVersionString = r.get(0, 0).asQString();
} }
void PgsqlDatabaseCatalogue::loadTypes(Pgsql::Connection &conn) void PgsqlDatabaseCatalogue::loadTypes(Pgsql::Connection &conn)

View file

@ -1,4 +1,5 @@
#include "Pgsql_Params.h" #include "Pgsql_Params.h"
#include <cstring>
using namespace Pgsql; using namespace Pgsql;
@ -30,16 +31,13 @@ Params::Params(Params&& rhs)
, m_paramValues(std::move(rhs.m_paramValues)) , m_paramValues(std::move(rhs.m_paramValues))
, m_paramLengths(std::move(rhs.m_paramLengths)) , m_paramLengths(std::move(rhs.m_paramLengths))
, m_paramFormats(std::move(rhs.m_paramFormats)) , m_paramFormats(std::move(rhs.m_paramFormats))
{ {}
//rhs.m_paramValues.clear(); // make sure origin is empty, to prevent double deletion
}
Params& Params::operator=(Params&& rhs) Params& Params::operator=(Params&& rhs)
{ {
if (&rhs != this) { if (&rhs != this) {
m_paramTypes = std::move(rhs.m_paramTypes); m_paramTypes = std::move(rhs.m_paramTypes);
m_paramValues = std::move(rhs.m_paramValues); m_paramValues = std::move(rhs.m_paramValues);
//rhs.m_paramValues.clear(); // make sure origin is empty, to prevent double deletion
m_paramLengths = std::move(rhs.m_paramLengths); m_paramLengths = std::move(rhs.m_paramLengths);
m_paramFormats = std::move(rhs.m_paramFormats); m_paramFormats = std::move(rhs.m_paramFormats);
} }

View file

@ -153,7 +153,7 @@ int Result::cols() const
return PQnfields(result); return PQnfields(result);
} }
const char* const Result::getColName(int idx) const const char * Result::getColName(int idx) const
{ {
return PQfname(result, idx); return PQfname(result, idx);
} }

View file

@ -116,7 +116,7 @@ namespace Pgsql {
int rows() const; int rows() const;
int cols() const; int cols() const;
const char* const getColName(int idx) const; const char* getColName(int idx) const;
const char* val(int col, int row) const; const char* val(int col, int row) const;
Value get(int col, int row) const; Value get(int col, int row) const;

View file

@ -54,3 +54,45 @@ Value::operator bool() const
return std::strcmp(m_val, "t") == 0; return std::strcmp(m_val, "t") == 0;
} }
//void operator<<(QString &s, const Value &v)
//{
// s = v.asQString();
//}
//void operator<<(QDateTime &l, const Value &v)
//{
// l = QDateTime::fromString(asQString(),
// "yyyy-MM-dd hh:mm:ss");
//}
//void operator<<(std::string &l, const Value &v)
//{
// l = v;
//}
//void operator<<(short &l, const Value &v)
//{
// l = (short)std::atoi(v.c_str());
//}
//void operator<<(int &l, const Value &v)
//{
// l = std::atoi(v.c_str());
//}
//void Pgsql::operator<<(Oid &l, const Value &v)
//{
// l = std::atoi(v.c_str());
//}
//void operator<<(__int64 &l, const Value &v)
//{
// l = std::strtoull(v.c_str(), nullptr, 10);
//}
//void operator<<(bool &l, const Value &v)
//{
// l = std::strcmp(v.c_str(), "t") == 0;
//}

View file

@ -13,6 +13,8 @@ namespace Pgsql {
public: public:
Value(const char *val, Oid typ); Value(const char *val, Oid typ);
QString asQString() const; QString asQString() const;
const char* c_str() const { return m_val; }
operator QString() const; operator QString() const;
operator QDateTime() const; operator QDateTime() const;
operator std::string() const; operator std::string() const;
@ -21,12 +23,24 @@ namespace Pgsql {
operator Oid() const; operator Oid() const;
operator __int64() const; operator __int64() const;
operator bool() const; operator bool() const;
private: private:
const char *m_val; const char *m_val;
Oid m_typ; Oid m_typ;
}; };
// void operator<<(QString &s, const Value &v);
// void operator<<(QDateTime &l, const Value &v);
// void operator<<(std::string &l, const Value &v);
// void operator<<(short &l, const Value &v);
// void operator<<(int &l, const Value &v);
// void operator<<(Oid &l, const Value &v);
// void operator<<(__int64 &l, const Value &v);
// void operator<<(bool &l, const Value &v);
template <typename T>
void operator<<(T &s, const Value &v)
{
s = static_cast<T>(v);
}
} // end namespace Pgsql } // end namespace Pgsql

View file

@ -336,6 +336,8 @@ void QueryTab::connectionStateChanged(ASyncDBConnection::State state)
case ASyncDBConnection::State::CancelSend: case ASyncDBConnection::State::CancelSend:
iconname = ":/icons/16x16/document_yellow.png"; iconname = ":/icons/16x16/document_yellow.png";
break; break;
case ASyncDBConnection::State::Terminating:
break;
} }
tabwidget->setTabIcon(i, QIcon(iconname)); tabwidget->setTabIcon(i, QIcon(iconname));
} }

View file

@ -15,6 +15,11 @@
</property> </property>
<layout class="QVBoxLayout" name="verticalLayout_3"> <layout class="QVBoxLayout" name="verticalLayout_3">
<item> <item>
<widget class="QSplitter" name="splitter">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<widget class="QWidget" name="">
<layout class="QHBoxLayout" name="horizontalLayout_2"> <layout class="QHBoxLayout" name="horizontalLayout_2">
<item> <item>
<widget class="QPlainTextEdit" name="queryEdit"/> <widget class="QPlainTextEdit" name="queryEdit"/>
@ -105,8 +110,7 @@
</widget> </widget>
</item> </item>
</layout> </layout>
</item> </widget>
<item>
<widget class="QTabWidget" name="tabWidget"> <widget class="QTabWidget" name="tabWidget">
<property name="currentIndex"> <property name="currentIndex">
<number>1</number> <number>1</number>
@ -154,6 +158,13 @@
<property name="bottomMargin"> <property name="bottomMargin">
<number>2</number> <number>2</number>
</property> </property>
<item row="0" column="0">
<widget class="QLabel" name="lblTimes">
<property name="text">
<string/>
</property>
</widget>
</item>
<item row="1" column="0"> <item row="1" column="0">
<widget class="QTreeView" name="explainTreeView"> <widget class="QTreeView" name="explainTreeView">
<property name="editTriggers"> <property name="editTriggers">
@ -176,13 +187,6 @@
</attribute> </attribute>
</widget> </widget>
</item> </item>
<item row="0" column="0">
<widget class="QLabel" name="lblTimes">
<property name="text">
<string/>
</property>
</widget>
</item>
</layout> </layout>
</widget> </widget>
<widget class="QWidget" name="logTab"> <widget class="QWidget" name="logTab">
@ -208,6 +212,7 @@
</layout> </layout>
</widget> </widget>
</widget> </widget>
</widget>
</item> </item>
</layout> </layout>
</widget> </widget>

View file

@ -7,8 +7,8 @@
ServerWindow::ServerWindow(MasterController *master, QWidget *parent) ServerWindow::ServerWindow(MasterController *master, QWidget *parent)
: ASyncWindow(parent) : ASyncWindow(parent)
, m_masterController(master)
, ui(new Ui::ServerWindow) , ui(new Ui::ServerWindow)
, m_masterController(master)
{ {
ui->setupUi(this); ui->setupUi(this);

View file

@ -25,10 +25,7 @@ int main(int argc, char *argv[])
auto master_controller = std::make_unique<MasterController>(); auto master_controller = std::make_unique<MasterController>();
master_controller->init(); master_controller->init();
int result = a.exec(); int result = a.exec();
WSACleanup(); WSACleanup();
return result; return result;

View file

@ -4,7 +4,7 @@
# #
#------------------------------------------------- #-------------------------------------------------
CONFIG += c++11 CONFIG += c++14
QT += core gui QT += core gui
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets sql greaterThan(QT_MAJOR_VERSION, 4): QT += widgets sql
@ -12,12 +12,13 @@ greaterThan(QT_MAJOR_VERSION, 4): QT += widgets sql
TARGET = pglab TARGET = pglab
TEMPLATE = app TEMPLATE = app
INCLUDEPATH += C:\prog\include C:\VSproj\boost_1_63_0 INCLUDEPATH += C:\prog\include C:\Prog\boost\include\boost-1_64
DEFINES += WIN32_LEAN_AND_MEAN NOMINMAX DEFINES += WIN32_LEAN_AND_MEAN NOMINMAX
LIBS += /LIBPATH:C:\VSproj\boost_1_63_0\stage\lib /LIBPATH:c:\prog\lib\ libpq.lib fmt.lib User32.lib ws2_32.lib #LIBS += -LC:/prog/boost/lib -Lc:/prog/lib libpq.lib fmt.lib User32.lib ws2_32.lib
LIBS += -LC:/MINGW/LIB -LC:/PROG/LIB -lws2_32 -lpq
debug { debug {
LIBS += c:\prog\lib\botand_imp.lib LIBS += c:/prog/lib/botand_imp.lib
} }
release { release {
@ -139,7 +140,7 @@ FORMS += mainwindow.ui \
RESOURCES += \ RESOURCES += \
resources.qrc resources.qrc
QMAKE_LFLAGS_WINDOWS = /SUBSYSTEM:WINDOWS,5.01 #QMAKE_LFLAGS_WINDOWS = /SUBSYSTEM:WINDOWS,5.01
win32:CONFIG(release, debug|release): LIBS += -L$$OUT_PWD/../core/release/ -lcore win32:CONFIG(release, debug|release): LIBS += -L$$OUT_PWD/../core/release/ -lcore
else:win32:CONFIG(debug, debug|release): LIBS += -L$$OUT_PWD/../core/debug/ -lcore else:win32:CONFIG(debug, debug|release): LIBS += -L$$OUT_PWD/../core/debug/ -lcore