Page 1 of 9

Сборка под Mac OS

PostPosted: Thu Apr 23, 2009 10:15 pm
by gromescu
Всем хорош GoldenDict, но сборки под мак явно нехватает до полного комплекта. Вот и посетила меня такая идея собрать программку под макосью. Т.к. никогда под мак ничего не собирал, то сразу возникает несколько вопросов 1. Достаточно ли будет одного qtcreator'a? 2. Каков шанс, что соберется без танцев с бубном?

Re: Сборка под Mac OS

PostPosted: Thu Apr 23, 2009 10:52 pm
by ikm
Во-первых, есть платформозависимые вещи. Сейчас это как минимум глобальные горячие клавиши. На данный момент они реализованы только для X11 и для win32. В принципе, их можно отключить, но это как-то нехорошо получится по отношению к маководам :) Во-вторых, все библиотеки, от которых программа зависит -- iconv, zlib, libogg/vorbis/vorbisfile, libzip, libhunspell, и так далее, если что забыл -- придется тоже собрать. Часть, возможно, входит в поставку OS X. Часть, возможно, уже есть где-то собранные. Но это всё надо будет разгугливать.

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

Креатора достаточно, но в нём скорее всего придется сделать чуть больше, чем просто нажать на 'Run' ;) В любом случае, попробовать, я думаю, можно :)

Re: Сборка под Mac OS

PostPosted: Fri Apr 24, 2009 6:57 pm
by dark_elf
Понадобилось собрать libogg, vorbis, libzip, libhunspell.

iconv, zlib входят в поставку MacOS (ну или может XCode).

Горячие клавиши увы работать не будут.

Сборку залил здесь:

http://depositfiles.com/files/vgoobeb69

P.S. Сборка для Intel (на PowerPC не пойдёт)

Re: Сборка под Mac OS

PostPosted: Fri Apr 24, 2009 8:25 pm
by ikm
Выложил, спасибо!:)

А оно вообще как, на маке работает? А то никто не пробовал никогда :)

Re: Сборка под Mac OS

PostPosted: Fri Apr 24, 2009 9:05 pm
by dark_elf
Работает, только вот клавиши горячие не работают что и неудивительно :)

(Хотя я мог что-то не заметить так как не проводил тестирование сравнимое с Вашим).

Re: Сборка под Mac OS

PostPosted: Sat Apr 25, 2009 1:45 pm
by gromescu
Сходу пару багов, которые удалось заметить:
1. В настройках групп, при вводе названия не видно что вводится.
2. Какая-то проблема с кодировками. Судля по всему проблема с dsl словарями - в стардиковских все впорядке. Словари у меня в utf-16. Не знаю это макоспецифичное что-то или нет, на позавчерашней сборке из svn на linux ничего подобного не видел

http://ipicture.ru/Gallery/Viewfull/17940429.html

3. В списке слов при наборе слова иногда не отображаются, хотя на самом деле они есть - если нажать стрелку вниз то в окне перевода они появятся - http://ipicture.ru/Gallery/Viewfull/17940585.html

Re: Сборка под Mac OS

PostPosted: Sat Apr 25, 2009 9:34 pm
by ikm
Ребят, я с маком могу помочь только опосредованно, потому что у меня его нет и я им никогда не пользовался. Если что, задавайте вопросы по структуре программы, отвечу.

Сейчас могу сказать, что пока причина столь странного рендера статьи мне неясна. Что до исчезающих строк, это ОЧЕНЬ похоже на какой-то глюк Qt. Хотя конечно это настолько явный глюк, что тут совсем что-то не так. То есть, пока складывается ощущение, что что-то не то с Qt (то ли собрана неправильно, то ли еще что-то).

По поводу рендера статьи, прямо сейчас можно сделать следующее. В файл article_maker.cc, в районе строки 322, после строк

Code: Select all
        if ( req.dataSize() > 0 )
          bodyRequests.front()->getDataSlice( 0, req.dataSize(),
                                              &data.front() + offset + head.size() );


Добавить следующее:

Code: Select all
        FILE * f = fopen( "/tmp/article_body.html", "wb" );
        fwrite( &data.front(), data.size(), 1, f );
        fclose( f );


/tmp/article_body.html можно заменить на какое-нибудь вменяемое имя файла, куда можно писать в Mac OS X, потому что я понятия не имею, какая там файловая иерархия :)

Далее компилируем программу, запускаем, делаем поиск 'casa', выводим текст статьи в окно. Когда он полностью вывелся, выходим из программы, не совершаяя в ней более никаких действий, и смотрим на результирующий файл (просто открываем браузером). Если статья выглядит нормально, значит это косяк QtWebKit. Если битая, значит, это gd виноват. Дальше будем смотреть по обстоятельствам.

Вообще, нам нужен майнтейнер программы под Mac OS X. Если есть желание разбираться со всеми этими косяками, а также собирать программу в будущем, отпишитесь.

Re: Сборка под Mac OS

PostPosted: Sun Apr 26, 2009 4:43 pm
by dark_elf
2. Какая-то проблема с кодировками. Судля по всему проблема с dsl словарями - в стардиковских все впорядке. Словари у меня в utf-16. Не знаю это макоспецифичное что-то или нет, на позавчерашней сборке из svn на linux ничего подобного не видел


проблема в том что я не знаю как на маке заменить эту функцию

http://linux.die.net/man/3/wcscasecmp

может знает кто?

Re: Сборка под Mac OS

PostPosted: Sun Apr 26, 2009 7:30 pm
by gromescu
dark_elf
Можешь расказать как собирать? Поставил qtcreator и xcode, скачал исходники. Делаю qmake ни на что не ругаясь проходит. make - make: *** No targets specified and no makefile found. Stop.
Что-то я явно делаю не так

Re: Сборка под Mac OS

PostPosted: Mon Apr 27, 2009 4:27 pm
by dark_elf
gromescu wrote:Можешь расказать как собирать? Поставил qtcreator и xcode, скачал исходники. Делаю qmake ни на что не ругаясь проходит. make - make: *** No targets specified and no makefile found. Stop.
Что-то я явно делаю не так


Похоже что у тебя стоит XCode... и поэтому вместо makefile генерится .xcodeproj (для сборки с помощью Qt Creator он и не нужен файла .pro достаточно).

В общем:

1. Собираешь под маком libogg, vorbis, libzip, libhunspell (configure, make, make install)
2. Запускаешь компиляцию на Qt Creator или XCode
3. Смотришь какие ошибки появились - там 2 источника ошибок:
а) платформеннозависимая работа с горячими клавишами
б) Функция http://linux.die.net/man/3/wcscasecmp которую надо как-то заменить чтобы не было проблем с кодировками со словарями из Лингво.
4. Соотвественно комментишь то что надо и всё компилится.