Hatred's Log Place

DON'T PANIC!

Apr 9, 2013 - 2 minute read - programming

Qt Creator: C/C++ parser and "pre-included" headers

Некоторые компиляторы (если не все) поддерживают такую функциональность: через параметр командной строки можно указать файл или файлы, которые будут подключаться автоматически к каждому обрабатываемому файлу. У GCC это опция `-include ````.

В некоторых проектах используют эту особенность, как результат - явного включения файла нет, а парсер в Qt Creator’е не видит части объявлений.

Решения единого нет: для каждого типа проекта (qmake, cmake, generic & etc), теоретически, оно своё (если есть вообще). В моём случае используется Generic project, для него решение существует.

И решение достаточно простое: Generic Project Mananger использует несколько файлов для хранения настроек проекта:

  • ProjectName**.creator** - головной файл, по сути не содержит никакой полезной информации
  • ProjectName**.files** - список файлов проекта (может содержать и не исходники)
  • ProjectName**.includes** - пути поиска заголовочных файлов
  • ProjectName**.config** - как гласит комментарий внутри этого файла: “ADD PREDEFINED MACROS HERE!

Вот последний файл самый интересный. Комментарий немного наводит в ступор и мы решаем, что тут можно только писать код вида: #define MACRO some_value

На самом деле, парсером этот файл воспринимается как обычный заголовочный файл и информация из него используется для парсинга всего остального. Чуете профит? Если нет, подсказываю: по сути это и есть наш “pre-included” header для парсера! И писать в нём мы можем всё, что понимается препроцессором (если быть точнее: парсером скеатора). Т.е. мы можем сделать такое: #include “includes/pre-included.h”

И всё, что объявлено в нашем pre-included.h станет доступно парсеру при обработке каждого файла. Дело сделано!

Было бы любопытно узнать как такое можно реализовать для Qmake и Cmake проектов.

PS вопрос этот я поднял в списке рассылки Qt Creator’а, пока ждал ответ, в голову пришла идея с #include, в результате список только подтвердил моё изыскание :)

UPDATE: рано обрадовался, внезапно, решение отказалось работать. Имхо, причина в несовсем корректном использовании .config файла.

Apr 8, 2013 - 1 minute read - programming c++

C++ Template Metaprogramming

Что-то не нашёл официального русского перевода книги, только сделанный в частном порядке (читать сложновато): http://enotcpp.blogspot.ru/2011/11/c-template-metaprogramming-david.html

На английском: http://ultra.sdk.free.fr/misc/docs/Addison.Wesley.C++.Template.Metaprogramming.Concepts.Tools.and.Techniques.from.Boost.and.Beyond.pdf или среди торрентов: http://rutracker.org/forum/viewtopic.php?t=1140883

Mar 28, 2013 - 1 minute read - programming c++

Qt Creator: "the debugger could not load the debugging helper library" на Windows XP

Решение подсказывают тут и тут. Если коротко: нужен GDB скомпилированный с поддержкой Python и Qt Creator на это расчитывает. По первой ссылке его рекомендуют брать в QtSDK, но качать его сильно накладно. Недолгое гугление привело на эту ссылку: http://origin.releases.qt-project.org/gdb/windows-xp/.

Устанавливатся просто: скачиваем, распаковываем, в настройках китов в Qt Creator (Tool -> Options… -> Build & Run -> Kits) выбираем новый отладчик (для MinGW) и живём.

PS другие версии: http://origin.releases.qt-project.org/gdb/ PPS более корректные ссылки: http://builds.qt-project.org/job/gdb-windowsxp/ и http://builds.qt-project.org/job/gdb-windows/

Mar 28, 2013 - 1 minute read - programming c++

Scott Meyers. Effective C++ in an Embedded Environment

This PDF document contains the presentation materials from Scott Meyers’ two-day training course Effective C++ in an Embedded Environment. It provides an in-depth examination of how C++ can be applied in embedded systems, including costs of language features, ROMing, ISRs, memory management, safety-critical and real-time considerations, and more.

Формат: презентация в PDF, чётко и по делу.

Для желающих получить без оплаты: effectcppemb.pdf

Mar 25, 2013 - 1 minute read -

С переездом!

Переехал на новый хостинг, вроде всё основное запустил. Заодно обновился и обновил плагин googleplusoneng.

Теперь проблем со скоростью (100Мбит) и доступностью (всё же сервер в серверной :)) должно быть поменьше.

Mar 5, 2013 - 1 minute read -

Google Drive и прокси с доменной авторизацией

Google Drive [речь про Windows] может работать только с прямым подключением к интернету или через прокси, настроенный в IE и без авторизации.

Что бы решить сабжевую проблему:

Пересказывая… Ставим cntlm прокси, идём в “C:
Program Files
Cntlm”, редактируем cntlm.ini, указываем логин и домен. При этом не спешим вводить свой пароль открытым текстом, вместо того вызываем cntml.exe следующим образом: cntlm.exe -H

вводим пароль, и копируем один из вариантов хеша в конфиг.

После всего этого делаем команду: net start cntml

и сервис у нас запущен.

В настройках прокси IE указываем:

  • хост: localhost
  • порт: 3128

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

UPD: Под Linux нужно попробовать: https://aur.archlinux.org/packages/insync/