Форум » RusXMMS Project » По поводу сборки » Ответить

По поводу сборки

taurus: Как я могу получить документацию? позволяет ли это делать make или я должен сам запускать doxygen? когда я делаю ./configure в конце выдает таке External IConv Library: no LibCharset Library: no для чего они нужны? GTK User Interface: no GTK2 User Interface: yes я так понимаю это нужно для librccui? Причем работает только с GTK, GTK2, но не работает с Qt. То есть если я захочу добавить поддержку кодировок в Qt приложение мне придется обойтись без настроек? Или писать их самому?

Ответов - 8

darksoft: taurus пишет: Как я могу получить документацию? Надо запускать Doxygen, конфиг лежит в docs/api. Сгенерированные доки доступны на rusxmms.sf.net. taurus пишет: External IConv Library: no LibCharset Library: no Нафиг не нужны. :) taurus пишет: я так понимаю это нужно для librccui? Причем работает только с GTK, GTK2, но не работает с Qt. То есть если я захочу добавить поддержку кодировок в Qt приложение мне придется обойтись без настроек? Или писать их самому? Да это для UI. librccui абстрактный класс, а gtk и gtk2 его имплементации. Имплементации под QT я не делал, но по идеии должно быть не сложно переписать. С другой стороны: a) В стандартном случае все должно работать по дефолту. b) В examples есть внешняя утилита, с помощью которой можно менять настройки для любого приложения.

taurus: Спасибо за ответы. Еще вопрос но уже касательно исходников. Ни iconv, ни libnatspec ни librcc не работают с wchar_t*. Я думаю что utf8 строки имеет смысл хранить именно в этом формате ведь он для того и предназначен? К примеру в unzip используется isprintf(), а эта функция обрабатывает только ascii символы и для быквы другого алфавита вернет false. Еще нет возможности правильно получить длину строки в символах. Поэтому мне кажется что строки utf8 корректнее хранить именно в wchar_t*, заместо char*

darksoft: wchar_t это удобный тип данных C++ для работы со символами, но совершенно не пригодный для их хранения. Главное, что он не портабелен: нету даже общепринятого стандарта о размере wchar_t. В gcc это 4 байта, в виндовой студии только 2 [http://prog.eskosoft.com/2007/01/13/19]. Далее хранение латинских букв (да и русских тоже) в 4 байтах сразу раздувает размер документа. Сам тип определен только в плюсах и чистые C-шные программы пролетают. На мой взгляд, wchar_t надо использовать надо следующим образом: 1) Читать данные в UTF-8 (16 whatever) 2) Если есть сомнения в кодировке, обрабатывать с помощью librcc 3) Конвертировать в wchar_t 4) Наслаждаться функцией определения длинны строки и т.п. :) 5) Конвертить обратно в UTF и сохранять


taurus: Написал чистую сишную программу int main() { setlocale(LC_ALL, ""); wchar_t pwc[] = L"Привет мир!"; wprintf(L"%d\n", wcslen(pwc)); wprintf(L"%ls\n", pwc); return 0; } собрал и запустил [taurus@lix utf8proba]$ make gcc -g -c -o main.o main.c gcc -o utf8proba main.o chmod a+x utf8proba [taurus@lix utf8proba]$ ./utf8proba 11 Привет мир! Посмотрел исходники unzip который слишком сишных (заголовки в стиле K&R) там тоже присутствует wchar_t

darksoft: Посыпаю голову пеплом, был не прав насчет исключительной C++. Но все равно оно не портабельно ;)

taurus: а librcc портабельна или она только для posix-совместимых ?

darksoft: Если честно я не пробовал ничего кроме BSD и Linuxа, но в самой librcc только несколько модулей, которые могут создать проблемы в чужеродных средах. Скорее всего придется немного пофиксить тут и там, отключить модуль перевода, но в целом серьезных проблем быть не должно (до тех пор пока для платформы существуют iconv и libxml2).

taurus: спасибо за ответы.



полная версия страницы