qtcreator

Описание: Разработка и отладка приложений. Упор на 3D-графику.

dyvniy M
Автор темы, Администратор
Администратор
Аватара
dyvniy M
Автор темы, Администратор
Администратор
Возраст: 41
Репутация: 1
Лояльность: 1
Сообщения: 3652
Зарегистрирован: Ср, 10 октября 2012
С нами: 11 лет 6 месяцев
Профессия: Программист
Откуда: Россия, Москва
ICQ Сайт Skype ВКонтакте

#1 dyvniy » Вс, 23 августа 2015, 17:45:25

Some configs
http://www.sql.ru/forum/877325-2/konfigurirovanie-qtcreator-qmake-posle-msvs

App , lib
Exe, dll

Учебник
http://www.htbook.ru/kompjutery_i_seti/programmirovanie/Qt-uchebnik
М. Шлее "Qt 4.8. Профессиональное программирование на C++" БХВ-Петербург, 2012 год, 912 стр. +CD, (31,3 мб. pdf, +CD 7,12 мб.)
https://cloud.mail.ru/public/BF3B/3YcfQ8EQi
Макс Шлее "Qt 5.3. Профессиональное программирование на C++" БХВ-Петербург, 2015 год, 928 стр. (36,5 мб. pdf)
https://cloud.mail.ru/public/6FxZ/PCxu15Ssu
Изображение

dyvniy M
Автор темы, Администратор
Администратор
Аватара
dyvniy M
Автор темы, Администратор
Администратор
Возраст: 41
Репутация: 1
Лояльность: 1
Сообщения: 3652
Зарегистрирован: Ср, 10 октября 2012
С нами: 11 лет 6 месяцев
Профессия: Программист
Откуда: Россия, Москва
ICQ Сайт Skype ВКонтакте

#2 dyvniy » Чт, 10 сентября 2015, 13:15:01

Отладка
http://doc.crossplatform.ru/qtcreator/1.3.0/creator-debugging.html
Спойлер
Отладка с помощью Qt Creator
Введение
Qt Creator не имеет собственного отладчика. Вместо этого он предоставляет графический интерфейс к различным отладчикам:

Платформа Компилятор Отладчик
Linux, Unixes, Mac OS gcc GNU Symbolic Debugger (gdb)
Windows/MinGW gcc GNU Symbolic Debugger (gdb)
Windows Microsoft Visual C++ Compiler Debugging Tools for Windows/Microsoft Console Debugger (CDB)
Интерфейс позволит вам отлаживать программу построчно и или по каждой инструкции, прерывать запущенную программу, устанавливать точки останова, просматривать содержимое стека вызовов, локальных и глобальных переменных и т. д.

В Qt Creator сырая информация, предоставляемая отладчиком, отображается явным и лаконичным образом, упрощая процесс отладки.

В дополнение к базовой функциональности IDE: просмотр стека, просмотр локальных и наблюдаемых переменных, регистров и т.д., Qt Creator имеет дополнительные особенности, делая отладку приложений, основанных на Qt, проще. Интерфейс отладчика знает о внутреннем устройстве некоторых классов Qt, таких как QString, контейнеры QTL и, что особенно важно, QObject (и унаследованные от него классы), а также большинство контейнеров C++ Standard Library и, таким образом, может представлять их содержимое удобным способом.

Замечания по установке отладчика
Отладчик Замечания
Gdb Требует gdb версии 6.8.
Debugging Tools for Windows Использование этого отладчика требует установку пакета Debugging Tools for Windows 32-bit или 64-bit (версии 6.11.1.404 для 32-bit или 64-bit версии Qt Creator соответственно), который доступен для свободного скачивания с Microsoft Developer Network.
Собранная версия Qt SDK for Windows будет использовать библиотеку если она присутствует в системе. При сборке Qt Creator с использованием компилятора Microsoft Visual C++, будет проверен путь "%ProgramFiles%\Debugging Tools for Windows" чтобы убедиться что все необходимые заголовочные файлы присутствуют.

Взаимодействие с отладчиком
В режиме Отладка несколько прикрепляемых виджетов используется для взаимодействия с отлаживаемой программой. Часто используемые виджеты отображаются по умолчанию; используемые редко спрятаны. Для изменения настроек по умолчанию, выберите Отладка, а затем выберите Виды.



Здесь вы можете заблокировать и разблокировать положение ваших видов, а также показать или спрятать их. Среди видов, которые вы можете отобразить есть Точки останова, Дизассемблер, Модули, Регистры, Отладчик, Стек и Поток. Расположение ваших прикрепляемых виджетов будет сохранено для последующих сессий.

Точки остановки
Точки останова показываются в виде Точки останова, который включён по умолчанию. Этот вид также доступен когда отладчик и отлаживаемая программа не запущены.

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

Обычно точки останова связаны с файлом исходных кодов и строкой или началом функции -- оба варианта доступны в Qt Creator.

Также прерывание программы на точке останова может быть запрещено при определённых условиях.

Вы можете установить точки останова:

В конкретной строке на которой вы хотите остановить программу -- щёлкните на поле слева или нажмите F9 (F8 для Mac OS X).
На функции, в которой вы хотите прерывать программу -- введите имя функции в Установить точку останова на функцию... в меню Отладка.
Вы можете удалить точку останова:

Щёлкнув на маркер точки останова в текстовом редакторе.
Выбрав точку останова в виде точек останова и нажав Delete.
Выбрав Удалить точку останова из контекстного меню точки останова в виде Точки останова.
Точки останова могут быть установлены и удалены перед тем как программа будет запущена или во время её работы под отладчиком. Также точки останова могут быть сохранены вместе с сессией.

Выполнение
Чтобы запустить программу под отладчиком выберите в меню Отладка пункт Начать отладку, или просто нажмите F5. Qt Creator проверит является ли собранная программа актуальной и пересоберёт её при необходимости. Отладчик получит контроль и запустит программу.

Замечание: Запуск программы в отладчике может занять заметное количество времени, обычно в диапазоне от нескольких секунд до нескольких минут, если используются сложные особенности (как QtWebKit).

После запуска программы она работает как обычно; тоже самое и с производительностью. Пользователь может прервать выполняемую программу выбрав Прервать из меню Отладка. Программа автоматически прерывается как только дойдет до точки останова.

Как только программа остановиться, Qt Creator:

Получает данные, представляющие стек вызовов в текущей положении программы.
Получает содержимое локальных переменных.
Просматривает Наблюдаемые.
Обновляет виды Регистры, Модули и Дизассемблер.
Вы можете использовать виды отладчика для более подробного просмотра данных.

Чтобы закончить отладку нажмите Shift+F5. Строка кода может быть исполнена как одно целое с F10; чтобы выполнить функцию или подфункцию используйте F11. Также вы можете продолжить выполнение программы с помощью F5. Можно продолжить выполнение программы до окончания текущей функции или перепрыгнуть на произвольную позицию в текущей функции.

Стек
Когда отлаживаемая программа прерывается, Qt Creator отображает наследованные вызовы процедур, приводящие к текущему положению в следе стека вызовов. След стека строится из кадров стека вызовов, каждый из которых представляет конкретную функцию. Для каждой функции Qt Creator попытается получить имя файла и номер строки соответствующих файлов исходных кодов. Эти данные отображаются в виде Стек.



Так как стек вызовов, приводящий к текущему положению, может происходить из или проходить через код для которого нет отладочной информации, не все кадры стека могут иметь соответствующие положения в исходном коде. Эти кадры будут иметь серый цвет в виде Стек view.

Если вы щёлкните на кадре с известным положением в исходном коде, текстовый редактор перейдёт в соответствующее положение и обновит вид Локальные и наблюдаемые переменные, делая их видимыми как будто программа была прервана перед входом в функцию.

Потоки
Если прервано многопоточное приложение, то можно использовать вид Поток или выпадающий список с именем Поток в строке состояния отладчика для переключения от одного потока к другому. Вид Стек будет настраивать себя соответственно.

Локальные и наблюдаемые переменные
Когда бы программа не остановилась под контролем отладчика, он получает информацию о верхнем кадре стека и отображает его в виде Локальные и наблюдаемые переменные. Он обычно включает информацию о параметрах функции в этом кадре, а также локальные переменные.

Составные переменные структур или классов в виде будут отображены как "раскрываемые". Щёлкните на "+" чтобы раскрыть элемент и показать все его члены. Помимо отображаемые значения и типа, пользователь может просмотреть и перейти к низкоуровневой компоновке данных объекта.

Замечание:
Gdb, и поэтому отладчик Qt Creator, работают с оптимизированной сборкой на Linux и Mac OS X. Тем не менее, оптимизация может привести к изменению порядка инструкций и иногда даже к полному удалению некоторых локальных переменных. В этом случае вид Локальные и наблюдаемые переменные может показывать неожиданные данные.
Отладочная информация, предоставляемая gcc не включает достаточной информации о времени, когда переменная инициализируется. Поэтому, Qt Creator не может сказать является ли содержимое начальной переменной "настоящими данными" или "начальным шумом". Если QObject появляется неинициализированным, его значение будет указано как "вне области". Тем не менее, не все неинициализированные объекты могут быть распознаны таким образом.
Вид Локальные и наблюдаемые переменные также предоставляет доступ к наиболее мощной особенности отладчика: полное отображение данных, принадлежащих базовым объектам Qt. Для включения этой особенности, выберите Использовать помощник отладчика в меню Отладка. Вид Локальные и наблюдаемые переменные будут автоматически переупорядочен для отображения высокоуровневого вида объектов. Например, в случае с QObject, вместо отображения указателя на некоторую закрытую структуру данных, вы увидите список потомков, сигналы и слоты.

Аналогично, вместо отображения множества указателей и целых чисел, отладчик Qt Creator покажет содержимое QHash или QMap в упорядоченном виде. Также отладчик покажет данные доступа для QFileInfo и предоставит доступ к "реальному" содержимому QVariant.

Вид Локальные и наблюдаемые переменные может быть использован для изменения содержимого переменной простого типа данных, такого как int или float, когда программа прервана. Чтобы сделать это, щёлкните на столбце Значение, исправьте значение в встроенном редакторе и нажмите Enter (или Return).

Замечание: Набор наблюдаемых переменных сохраняется в вашей сессии.

Модули
По умолчанию, вид Модули спрятан, так как он полезен только с экспериментальным средством отложенной загрузки отладочной информации. Вы можете включить это свойство выбрав Быстрый запуск отладчика

С этим свойством, отладочная информация из библиотеки Qt не загружается при запуске программы, таким образом уменьшая время запуска для некоторых приложений. В этом случае вы можете использовать вид Модули для загрузки этой информации вручную при необходимости.

Замечание: В этом случае некоторые точки останова не могут быть вызваны отладчиком.

Дизассемдлер и Регисты
По умолчанию, виды Дизассемблер и Регистры спрятаны. Вид Дизассемблер отображает дизассемблированный код для текущей функции; вид Registers отображает текущее состояние регистров CPU. Оба вида полезны для низкоуровневых команд, таких как Перейти на одну инструкцию и Перейти через инструкцию.

Библиотека помощника отладчика
При отладке Qt Creator динамически загружает вспомогательную библиотеку в вашу программу. Эта вспомогательная библиотека обеспечивает Qt Creator красивое отображение типов Qt и STL. Пакет Qt SDK уже содержит заранее скомпилированную библиотеку помощника отладчика. Чтобы создать библиотеку помощника отладчика, выберите Параметры... из меню Инструменты и перейдите на закладку Qt 4/Версии Qt. Так как внутренняя компоновка Qt может меняться для разных версий, библиотека помощника отладчика собирается для каждой версии Qt.

Пособие по интерфейсу отладчика
В нашем примере TextFinder мы считывали текстовый файл в QString, а замет отображали его в QTextEdit. Предположим, что вы хотите взглянуть на эту строку QString line и посмотреть какую информацию она хранит. Выполните шаги, описанные ниже, чтобы разместить точку останова и просмотреть данные объекта QString.

Установка точки останова
Сначала, мы установим точку останова на строке где мы вызываем setPlainText() щёлкнув между номером строки и границей окна. Затем, выберите Начать отладку из меню Отладка или нажмите F5.

Точки останова указываются в виде Точки останова, показанного ниже, в режиме Отладка. Если вы желаете удалить точку останова, просто щёлкните на ней правой кнопкой мыши и выберите Удалить точку останова из контекстного меню.



Чтобы просмотреть содержимое строки line, взгляните на вид Локальные или наблюдаемые переменные.



Предположим что мы изменили нашу функцию on_findButton_clicked() чтобы она перемещалась в начало документа и продолжала поиск после того, как курсор достигал конца документа. Эта функциональность может быть добавлена с помощью фрагмента кода, приведённого ниже:

void TextFinder::on_findButton_clicked()
{
QString searchString = ui->lineEdit->text();

QTextDocument *document = ui->textEdit->document();
QTextCursor cursor = ui->textEdit->textCursor();
cursor = document->find(searchString, cursor,
QTextDocument::FindWholeWords);
ui->textEdit->setTextCursor(cursor);

bool found = cursor.isNull();

if (!found && previouslyFound) {
int ret = QMessageBox::question(this, tr("End of Document"),
tr("I have reached the end of the document. Would you like "
"me to start searching from the beginning of the document?"),
QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes);

if (ret == QMessageBox::Yes) {
cursor = document->find(searchString,
QTextDocument::FindWholeWords);
ui->textEdit->setTextCursor(cursor);
} else
return;
}
previouslyFound = found;
}
Тем не менее, если вы соберёте и запустите этот код, приложение не будет работать правильно из-за логической ошибки. Чтобы обнаружить эту логическую ошибку, вы можете пройти через код, используя следующие кнопки:

Изображение

dyvniy M
Автор темы, Администратор
Администратор
Аватара
dyvniy M
Автор темы, Администратор
Администратор
Возраст: 41
Репутация: 1
Лояльность: 1
Сообщения: 3652
Зарегистрирован: Ср, 10 октября 2012
С нами: 11 лет 6 месяцев
Профессия: Программист
Откуда: Россия, Москва
ICQ Сайт Skype ВКонтакте

#3 dyvniy » Чт, 17 декабря 2015, 18:22:39

Подключение boost

Код: Выделить всё

LIBS += -lboost_thread -lboost_system

и так далее
В linux либы надо скопировать в /usr/lib, а папку с заголовочниками в /usr/include
Чтоб компилить boost под linux надо качать tar.gz или tar.bz. Файлы в двух других архивах заточены под винду, у них конец строк другой и возможны глюки.

а в windows можно так

Код: Выделить всё

INCLUDEPATH += C:/WORK/boost_1_59_0
LIBS 
+= "-LC:\WORK\boost_1_59_0\lib64-msvc-12.0" 
Изображение

dyvniy M
Автор темы, Администратор
Администратор
Аватара
dyvniy M
Автор темы, Администратор
Администратор
Возраст: 41
Репутация: 1
Лояльность: 1
Сообщения: 3652
Зарегистрирован: Ср, 10 октября 2012
С нами: 11 лет 6 месяцев
Профессия: Программист
Откуда: Россия, Москва
ICQ Сайт Skype ВКонтакте

#4 dyvniy » Ср, 17 февраля 2016, 11:02:14

как написать CMakeLists.txt
http://preetisblog.com/programming/how-to-write-cmakelists-txt
Спойлер
How To Write CmakeLists.Txt
Posted on Sunday, October 14, 2012 by admin
If u have ever run into problems of porting a Visual C++ (Visual Studio) project/ solution from one location to other or even worse if from one machine to other with an entirely different version of Visual C++ / Visual Studio as well as different configurations of add on libraries, then this post is for you.

We present a very easy and simple way of porting one or all files of a Visual C++ project from one location/ machine to any other place, even in fact across platforms like Windows, Linux etc.

For the said purpose we will make use of CMake utility i.e. the cross platform make utility. Its a freely available utility and can be downloaded from here. This utility requires only all your source files i.e. .c /.cpp files and the header files (.h) files in addition to one more file i.e. CMakeLists.Txt.

The main target of writing this post is to familiarise with the procedure of writing a simple CmakeLists.Txt file, which is very simple to write. A very complex documentation which is available online as on date, makes it very difficult for a novice to make use of this very beneficial tool. So here we go, writing a very simple CmakeLists.Txt and explaining it each statement side by side. We are taking a very complex project having multiple header files, with numerous external libraries and additional dependencies, so as to completely explain the concept.

Following is a completely working version of CMakeLists.Txt which you may use as required by you after modifications. Please note that all statement beginning with # are taken as comments by CMake and will be used for explaination of the file to you.

cmake_minimum_required(VERSION 2.8 FATAL_ERROR)
# Above line indicates to Cmake that minimum version 2.8 is required.
# As you may have noted all lines beginning with hash symbol are treated as comments by Cmake.
SET(sampleName MyApp)
# In the above line we declared a variable sampleName and assigned it a value MyApp. We will make use of the same later.project(PrjMyApp)
# here we define the project or solution (for visual studio) name
# In following lines we try to find out the packages of additional libraries, if reqd. Here we are trying to locate PCL and mrpt library.
# u may replace the names by yours. Each such package should have a Cmake file in them, if not then we may have to manually define the paths.
# we Show that later.
find_package(PCL 1.2 REQUIRED)
FIND_PACKAGE(MRPT REQUIRED base;bayes;obs;gui)

# here we specify the additional include directories for the project. These files come in additional include directories option of VC++
# project.
# either the variable values from package like ${PCL_INCLUDE_DIRS} or absolute paths as shown in second and third line may be used.
include_directories(${PCL_INCLUDE_DIRS})
include_directories("G:/Matlab/extern/include")
include_directories("C:/Program Files/MobileRobots/Aria/include")

# here we specify the additional library directories for the linker in the project. These files come in additional library directories
# option of VC++ project.
# either the variable values from package like ${PCL_LIBRARY_DIRS} or absolute paths as shown in second and third line may be used.
# An update, link_directories is being pulled out, you may use TARGET_LINK_LIBRARIES instead as shown below
link_directories(${PCL_LIBRARY_DIRS})
link_directories("G:/Matlab/extern/lib/win32/microsoft")
link_directories("C:/Program Files/MobileRobots/Aria/lib")

# here we add definitions for any package if requred.
add_definitions(${PCL_DEFINITIONS})

# The following line is very important.
# It specifies the executable name. Here the executable is the first parameter i.e. MyApp and a file MyApp.exe will be created on
# compilation in windows platform.
# Followed by the executable name come all your source and header files.
# All cpp fles will be clubbed into source folder and all .h files will be added to header files folder of the project.
add_executable (MyApp Local.cpp part.h grab.h interface.h test.cpp test.h)

# There may be some additional dependencies which you may have to specify for the project, which you may do as in following lines.
# Note that first parameter is the executable name.
target_link_libraries (MyApp ${PCL_LIBRARIES} libeng.lib libmx.lib libmex.lib libmat.lib Aria.lib winmm.lib wsock32.lib)
# Add the required libraries for linking:
TARGET_LINK_LIBRARIES(${sampleName}
${MRPT_LIBS} # This is filled by FIND_PACKAGE(MRPT ...)
"" # Optional extra libs...
)
# End of CMakeLists.Txt file. Save it as a plain text file and the name should be exactly CMakeLists.Txt

After you have created your CMakeLists.Txt file, save it in the same folder as all your *.c/*.cpp/*.h files.

Create a new folder to hold all your project/ solution files within same folder. Lets say u name it MyPrjFiles.

Now open the CMake Gui application (These are for Windows platform only, for Linux refer to CMake instructions here).

Specify the source folder location as the location where you have kept your source, header and CMakeLists.Txt file.

Specify the location of MyPrjFiles folder in the text field for where to build binaries.

How to write and use CMakeLists.Txt

Then click on the configure button on the bottom. It will read your CMakeLists.Txt file and try to configure the project for you. It is in fact checking for errors (if any) and will ask you for the version of compiler for which binaries are to be built for. Specify the correct version of your compiler. In case of errors it will report in red. You will have to rectify the errors before proceeding further.

After no errors are reported, you may click on generate button. And ur job is done. You will find all your reqired solution and project files in MyPrjFiles folder. When you open your solution and try to compile it, it compiles so smoothly i.e. there are no problems of setting up the environment.

Now for taking a backup or shifting your project from one place to other, just take all your source file and ur CMakeLists.Txt file to new location and generate project in new environment once using CMake utility. So you have the complete independence now to work between multiple machines, multiple environments, multiple platforms without a hassle. Just keep a CMakeLists.Txt file for each place handy and it does the work for you.

Please do drop in your feedback/ suggestions for the article below……




This entry was posted in Programming and tagged aria, backup VC++ project, Cmake, CMake how to, CMake Tutorial, CMakeGui, CMakeLists.Txt, compile PCL examples, easy way to compile PCL code, how to CmakeLists.txt, how to write CMakeLists.Txt, mobile robot, mobilerobots, move VC++ Project, PCL, point cloud library, Programmin VC++, Project, relocate C++ Project, sample CMakeLists.Txt, shift VC++ project, Solution, trouble compiling PCL code, trouble shifting project, Tutorial on CMake, use CMakeLists.Txt, using CMakeLists.Txt, Visual Studio, Visual Studio Solution backup by admin. Bookmark the permalink.
8 THOUGHTS ON “HOW TO WRITE CMAKELISTS.TXT”
admin on Saturday, November 3, 2012 at 1:24 pm said:
All u c++ developers, pls have a look on this post….

Log in to Reply
Jappi Bains on Tuesday, December 4, 2012 at 6:02 pm said:
Thats a very nice tutorial for writing CMakeLists.Txt, saved a lot of trouble while handling and using external libraries with visual C++

Log in to Reply
Rafay Ali Khan on Tuesday, January 15, 2013 at 4:32 am said:
Where is the path for PCL 1.2 package stored on the computer. Where does the CMakeLists.txt file search for the path of this variable? Thanks

Log in to Reply

admin
on Wednesday, January 16, 2013 at 7:06 am said:
Hi Rafay,

PAth for PCL is stored in the system environment variables ${PCL_INCLUDE_DIRS} and ${PCL_LIBRARY_DIRS}, which are set up by the PCL package during installation. As PCL supports CMake you need not worry for the same. In case these variables are not set up properly on your system, you may choose to manually set them up as explained in the article above.

Log in to Reply
admin on Saturday, January 19, 2013 at 5:03 pm said:
This is favourite article of our users….

Log in to Reply
Pingback: Use Matlab from C and C Plus Plus | preetisblog

dontTell on Thursday, May 30, 2013 at 5:41 am said:
1. Why to register to leave a comment?
2. Thanks for the tutorial!
3. Please correct the line-breaks, which makes it really hard to read! (or simply provide the txt-file for download.

Thanks!

Log in to Reply

admin
on Thursday, May 30, 2013 at 4:21 pm said:
Thanks for ur appreciation and for taking time to leave a comment. We always look forward to getting feedback from our worthy users.

We had to force the “requirement to register”, for leaving a comment after spammers gave us a tough time by leaving lot of unwanted comments.

We accept ur third comment and will do the needful to provide a download link for txt file, in a short span of time.

Once again thanks a lot n regards……

Изображение


Название раздела: Программирование (под Desktop и Android)
Описание: Разработка и отладка приложений. Упор на 3D-графику.

Быстрый ответ


Введите код в точности так, как вы его видите. Регистр символов не имеет значения.
Код подтверждения
:) ;) :hihi: :P :hah: :haha: :angel: :( :st: :_( :cool: 8-| :beee: :ham: :rrr: :grr: :* :secret: :stupid: :music: Ещё смайлики…
   

Вернуться в «Программирование (под Desktop и Android)»

Кто сейчас на форуме (по активности за 15 минут)

Сейчас этот раздел просматривают: 1 гость