Russian Qt Forum

Qt => Установка, сборка, отладка, тестирование => Тема начата: Elfet от Май 05, 2010, 14:48



Название: Сборка boost::thread из Qt
Отправлено: Elfet от Май 05, 2010, 14:48
Всем привет!

Пытаюсь собрать boost::thread под Windows из Qt. (как пользоватся этой bjam так и не резобрался =( ) Поэтому решил просто собрать вре файлы из boost/lib/thread/src/ в Qt проект и скомпилировать:
Цитировать
QT -= gui
TARGET = thread
TEMPLATE = lib
CONFIG += staticlib

SOURCES += tss_null.cpp \
    win32/tss_pe.cpp \
    win32/tss_dll.cpp \
    win32/timeconv.inl \
    win32/thread.cpp \
    win32/exceptions.cpp

# boost
INCLUDEPATH += D:/Qt/boost/boost_1_40_0

Однако не получилось, компилятор minGW выдал следующее:

Цитировать
gcc: win32\timeconv.inl: linker input file unused because linking not done
win32\thread.cpp: In static member function 'static unsigned int boost::thread::hardware_concurrency()':
win32\thread.cpp:306: warning: missing braces around initializer for '_SYSTEM_INFO::<anonymous union>'
win32\thread.cpp: In function 'LARGE_INTEGER boost::this_thread::<unnamed>::get_due_time(const boost::detail::timeout&)':
win32\thread.cpp:329: warning: missing braces around initializer for '_LARGE_INTEGER::<anonymous struct>'

Как от этого избавится? Пожалуйста, помогите собрать boost::thread!

Заранее спасибо!


Название: Re: Сборка boost::thread из Qt
Отправлено: m_ax от Май 05, 2010, 15:45
Цитировать
Однако не получилось, компилятор minGW выдал следующее:

А я что-то не вижу хедэров..

типа:
HEADERS += ...

Или их там принципиально нэт  ???))


Название: Re: Сборка boost::thread из Qt
Отправлено: Elfet от Май 05, 2010, 16:40
А их разве нужно подключать?


Название: Re: Сборка boost::thread из Qt
Отправлено: m_ax от Май 05, 2010, 23:28
Цитировать
А их разве нужно подключать?
Да нет)) Достаточно компу сказать:
-Эй, собери мне вот енту библиотеку)) Ну ты знаешь где что лежит, окэ)))

Если у вас изначально только исходники и вы хотите собрать из низ библиотеку, нужно указать и хэдэры.. После этого (после того как он соберёт их) в файле проекта, где используется ваша библиотека нужно указать путь к хэдерам:
INCLUDEPATH += ...// путь где лежат хэдеры

и добавить:

LIBS += -L/путь к библиотеке -lmylib
где mylib - эт то как она у вас зовётся)

И почитайте тему: уроки и статьи "Создание динамических библиотек" там всё оч хорошо освящено (хотя прилогаемые примеры у меня собрались тока под линем) под хренью есть одна тонкость, ну да фиг с ней))     


Название: Re: Сборка boost::thread из Qt
Отправлено: Elfet от Май 06, 2010, 10:42
Добавлять хедеры вовсе не обязательно в проект. Так как они не компилируются. Компилируются только cpp файлы.
INCLUDEPATH += ...// у меня есть на буст, так как собираюсь собирать буст.


Название: Re: Сборка boost::thread из Qt
Отправлено: niXman от Май 06, 2010, 12:05
собранный boost: http://rghost.ru/1409960

постоянно натыкаюсь на подобные посты, и не въезжаю - в чем же сложность сборки boost ??? на офф сайте есть инструкция по сборке, состоящая из трех шагов.


Название: Re: Сборка boost::thread из Qt
Отправлено: m_ax от Май 07, 2010, 19:38
Цитировать
Добавлять хедеры вовсе не обязательно в проект. Так как они не компилируются.

Разумеется нет) В ваш проект, который использует boost даже .cpp файлы добавлять не нужно)
В файле вашего проекта (который использует уже собранную либу) должны быть тока две строчки:
1) INCLUDEPATH += то, где лежат хедеры
2) LIBS += -L/ путь, где лежат сами длл (ну или как вы там её собрали..) -lnamelib
где namelib - ну я эт уже говорил))

Но чтоб собрать её (либу) используя qmake нужно в pro файле указать и исходники SOURCES и хедеры HEADERS...
ну и INCLUDEPATH тож разумеется))

Вот соберёте её, и можете вообще все ваши .cpp файлы удалить нафиг, главное длл и хедеры чтоб были..

А так вы хрен соберёте, без хедеров))

Бог в помощь, короче)) Я пошёл пиво пить))   
     


Название: Re: Сборка boost::thread из Qt
Отправлено: Elfet от Май 08, 2010, 10:35
niXman, я пытаюсь сделать это под Windows. Что за три шага? Что мне нужно сделать что-бы она собралась?  ???

 m_ax, мне dll вовсе и не нужен. при сборке ЛЮБОГО проекта добавлять хедеры не обязательно, так как компилируются (в объектные файлы) только cpp файлы.


Название: Re: Сборка boost::thread из Qt
Отправлено: Marat(Qt) от Май 08, 2010, 10:53
niXman, я пытаюсь сделать это под Windows. Что за три шага? Что мне нужно сделать что-бы она собралась?  ???

 m_ax, мне dll вовсе и не нужен. при сборке ЛЮБОГО проекта добавлять хедеры не обязательно, так как компилируются (в объектные файлы) только cpp файлы.
Либо я совсем ничего не понимаю, либо вы несете чушь


Название: Re: Сборка boost::thread из Qt
Отправлено: Sancho_s_rancho от Май 08, 2010, 11:05
m_ax, мне dll вовсе и не нужен. при сборке ЛЮБОГО проекта добавлять хедеры не обязательно, так как компилируются (в объектные файлы) только cpp файлы.
Яростный бред.


Название: Re: Сборка boost::thread из Qt
Отправлено: Elfet от Май 08, 2010, 11:22
 ;D ;D ;D возьмите любой проект, в файле pro за комментируйте все хедеры (только обеспечьте их видимость из cpp-файлов) и собирайте проект :)


Название: Re: Сборка boost::thread из Qt
Отправлено: m_ax от Май 08, 2010, 14:10
Цитировать
возьмите любой проект, в файле pro за комментируйте все хедеры (только обеспечьте их видимость из cpp-файлов) и собирайте проект
Аминь)))

Беру, как вы говорите любой проект) В моём случае я создал ради прикола самое простое (исходники приатачены). Всего один хедер: widget.h и соответствующий ему widget.cpp. Да, ну и разумеется main.cpp)
Вот как выглядит .pro файл этого проекта (рабочей заметьте):
Код
C++ (Qt)
TARGET = SimpleProject
TEMPLATE = app
 
SOURCES += main.cpp\
       widget.cpp
 
HEADERS  += widget.h
 
MOC_DIR = $$PWD/build
OBJECTS_DIR = $$PWD/build
DESTDIR = $$PWD/bin
 
   

На последние три строчки внимания не обращайте. В таком виде всё собирается и работает))

Теперь, по вашему совету, я убираю (закомментирую) HEADERS..
Пробую собрать: хрен((
Ладно, думаю может добавление INCLUDEPATH исправит дело? Добавляю... Компилирую, компилирую: Ыыы  :-\
Ладно, вспомнил вы говорили, что нуна бы обеспечить видимость хедеров в cpp файлах.. Если честно, долго думал, чтобы это могло значить.. Короче я так понял, нужно в cpp файлах где инклудятся заголовочники прописывать полный путь.. Например:
Код
C++ (Qt)
#include "/home/max/Qt-projects/SimpleProject/widget.h"
// вместо
#include "widget.h"
 
Прописал везде полные пути.. Ворожу, ворожу не торможу  ;D
И на этот раз обломс >:(

В чём ваш секрет, любезнейший??
 



Название: Re: Сборка boost::thread из Qt
Отправлено: niXman от Май 08, 2010, 14:12
Цитировать
niXman, я пытаюсь сделать это под Windows. Что за три шага? Что мне нужно сделать что-бы она собралась?
я ведь не радиоточка.
говорю что буст собирается РОВНО за три шага!


Название: Re: Сборка boost::thread из Qt
Отправлено: Elfet от Май 08, 2010, 14:20
niXman, ну так что за три шага-то? :)

Вот зацените простейшее консольное приложение + класс и - header.


Название: Re: Сборка boost::thread из Qt
Отправлено: Elfet от Май 08, 2010, 14:24
Видимо не собирается если в классе есть макрос Q_OBJECT - и если отсутствуют заголовочные файлы не происходит qmake для них и не создаются moc_*.cpp.  :)


Название: Re: Сборка boost::thread из Qt
Отправлено: m_ax от Май 08, 2010, 16:22
Цитировать
Видимо не собирается если в классе есть макрос Q_OBJECT - и если отсутствуют заголовочные файлы не происходит qmake для них и не создаются moc_*.cpp.

Да, если в классе объявлен макрос Q_OBJECT то без хедеров не соберётся)

И всё же не лишне их добавлять, поскольку в этом случае они видны в самом проекте..   


Название: Re: Сборка boost::thread из Qt
Отправлено: Elfet от Май 08, 2010, 19:19
Ну а по сабжу может мне кто-нибудь помочь? Очень нужно! Диплом горит.


Название: Re: Сборка boost::thread из Qt
Отправлено: m_ax от Май 09, 2010, 00:51
Цитировать
Ну а по сабжу может мне кто-нибудь помочь? Очень нужно! Диплом горит.
Все вопросы к niXmanу - он у нас эксперт по boost)))


Название: Re: Сборка boost::thread из Qt
Отправлено: niXman от Май 09, 2010, 01:32
только что провел эксперимент по сборке буста в вендавз.
и в самом деле, для сборки нужно всего два шага, не считая распаковки архива с исходниками.
при желании, конечно, можно bjam`у передать некоторые опции. но тебе этого не нужно.
ссылку на мною собранный буст я давал раньше.

Цитировать
Все вопросы к niXmanу - он у нас эксперт по boost)))
я только учусь ::)


Название: Re: Сборка boost::thread из Qt
Отправлено: Elfet от Май 09, 2010, 10:38
niXman, ну пожалуйста, скажи что ты делаешь что бы собрать буск?  ???


Название: Re: Сборка boost::thread из Qt
Отправлено: niXman от Май 09, 2010, 10:59
распакуй исходники в корень "c:\" к примеру.
открой консоль в этом каталоге.
далее в консоле вводишь две команды:
Код
DOS
> bootstrap.bat
> bjam --toolset=gcc install
 
ждешь, ждешь...потом в корне "c:\" появляется каталог boost. каталог с исходниками boost можно удалять.

зы
я использую более тонкую сборку. т.к. по умолчанию boost собирается немного неудобно.
может накатать статью? кто, что скажет?


Название: Re: Сборка boost::thread из Qt
Отправлено: Elfet от Май 09, 2010, 11:03
О, большое спасибо!

Про статью самое то!  ::)


Название: Re: Сборка boost::thread из Qt
Отправлено: serg_hd от Июль 15, 2010, 19:59
А зачем
Код
DOS
> bootstrap.bat
 
?
У себя создал bat-файл с:
Код
DOS
@echo off
bjam --toolset=gcc install
pause
 
кинул его в корень буста вместе с bjam.exe, запустил и всё нормально собралось и успешно используется программой. Кстати, тормозов с ним в netbeans не замечал пока, вопреки некоторым мнениям.


Название: Re: Сборка boost::thread из Qt
Отправлено: niXman от Июль 15, 2010, 20:06
Цитировать
Кстати, тормозов в netbeans не замечал пока, вопреки некоторым мнениям.
установка буста, сама по себе нетбинс не тормозит ;)
нужно еще и код писать ;D


Название: Re: Сборка boost::thread из Qt
Отправлено: serg_hd от Июль 15, 2010, 20:07
я про код и говорю, сказал же

и успешно используется программой
хз, может при мегапроектах и было бы заметно, но пока нет


Название: Re: Сборка boost::thread из Qt
Отправлено: niXman от Июль 15, 2010, 20:08
я о коде и говорю
хеловорды на mpl ваяете?


Название: Re: Сборка boost::thread из Qt
Отправлено: serg_hd от Июль 15, 2010, 20:12
я о коде и говорю
хеловорды на mpl ваяете?
собственно да, т.к. поставил его для ознакомления, нет мне в нём надобности пока. И некоторые примеры пробовал тоже. А что за проектег должен быть, чтобы на тормоза посмотреть? :)


Название: Re: Сборка boost::thread из Qt
Отправлено: niXman от Июль 15, 2010, 21:07
Цитировать
А что за проектег должен быть, чтобы на тормоза посмотреть?
по разному.
несколько проектов, по 900-1200 строк, один в 27000 строк. на последнем, криейтор съедает 1200-1400 метров памяти. пробовал открыть его в нетбинсе - валится. по моему, уже где-то писал об этом...кажется на этом форуме...

кстати, самые большие тормоза заметил во фрагментах кода, использующих спирит. буквально 60ти строчный парсер, затормаживает автодополнение до 3-8 секунд. и это в криейторе, который является самым быстрым в этом плане, из msvc, netbeans, qtcreator. при таких таймаутах работать крайне сложно. отключил бы автодополнение, но не знаю как :(


Название: Re: Сборка boost::thread из Qt
Отправлено: serg_hd от Июль 15, 2010, 21:19
Наверно это всё же зависит не от кол-ва строк, а от кол-ва подключённых модулей (или как эта тема называется в бусте) или других особенностей. Т.к. у меня проект в 15к на Qt тормозов никаких тоже не вызывает.


Название: Re: Сборка boost::thread из Qt
Отправлено: niXman от Июль 16, 2010, 00:46
Цитировать
15к на Qt тормозов никаких тоже не вызывает.
не путайте мягкое с теплым.
Qt - это больше похоже на Си с классами, чем на С++ ;)
STL, boost - это все шаблоны. принцип инстанцирования шаблона, типозависим при компиляции. об этом нужно читать в "умных" книжках, а не в шлеях.


Название: Re: Сборка boost::thread из Qt
Отправлено: Sahab от Июль 16, 2010, 00:57
"умных" книжек все же нет... во всяком случае по дусту


Название: Re: Сборка boost::thread из Qt
Отправлено: serg_hd от Июль 16, 2010, 01:01
Qt - это больше похоже на Си с классами, чем на С++ ;)
да, где-то уже встречал такую "теорию".

STL, boost - это все шаблоны. принцип инстанцирования шаблона, типозависим при компиляции. об этом нужно читать в "умных" книжках, а не в шлеях.
Зачем мне это, если почти не использую ничего подобного? Надобности особой нет, по крайней мере пока. От мысли, что писал бы "шаблонами" мне не становится ни теплей, ни холодней.


Название: Re: Сборка boost::thread из Qt
Отправлено: ufna от Июль 16, 2010, 09:15
проекты и больше 100к строк кода на Qt в креаторе не тормозят и памяти столько не жрут, ибо счас в силу обстоятельств на 1Гб плашке нетбуке с этим работаю. К счастью, шаблонов в нем очень мало :)


Название: Re: Сборка boost::thread из Qt
Отправлено: niXman от Июль 16, 2010, 10:57
Цитировать
Зачем мне это, если почти не использую ничего подобного? Надобности особой нет, по крайней мере пока. От мысли, что писал бы "шаблонами" мне не становится ни теплей, ни холодней.
до изобретения электричества, люди тоже жили ;D