Mac OS, CMake and wxWidgets
March 18th, 2010 Begemot Posted in Использование
Привалило мне тут счастье в виде халтурки по клонированию одной утилиты с винды на мак. Поскольку я давно мечтал портировать свой софт под мак (я же пишу на вхВиджетс!) не долго думая согласился. Поставил систему (установка MAC OS на хакинтош , первые впечатления) и потихоньку осваиваюсь. Даже завел новый блог – Dive Into Mac OS – микрозаметки новичка🙂
Почти день убил на то что бы скрестить исходники, wxWidgets, CMake и IDEs, с переменным успехом, Очень удачно получилось что пару недель назад я наконец решил освоить CMake вместе с minGW под виндой, в рамках программы подготовки перехода на альтернативные оси, правда тогда я еще не знал что это будет так скоро:)
Теперь о плохом, модуль смейка FindWxWidgets под маком работает хреново (под виндой кстати тоже не идеально), это + почти полное не понимание того как это все работает под макосом\линуксом привели к тому что я провозился почти целый день,
Теперь кратко о проблемах с wxWidgets и CMake под Mac OS и о том как удалось решить,
1. скомпилить вхВиджетс получилось но проинсталировать почему-то нет. то есть оно вроде инсталируется но wx-config –list возвращает только ту версию вхсов которая стояла в макое по умолчанию и не видит мою. решается указанием в CMake файле где брать нашу библиотеку
SET(wxWidgets_CONFIG_EXECUTABLE /…path…/build/my-mac/wx-config)
2. Для мака надо обязательно указывать архитектуру иначе ругается на либы
SET(CMAKE_OSX_ARCHITECTURES i386)
3. На всякий случай добавляем еще и (хотя точно не уверен что надо)
set(CMAKE_OSX_SYSROOT /Developer/SDKs/MacOSX10.6.sdk)
4. Теперь собственно поиск и подключения wxWidgets. (путь мы уже установили вверху)
После
find_package (wxWidgets COMPONENTS ${myWXWIDGETS_LIBS} REQUIRED)
include_directories(${wxWidgets_INCLUDE_DIRS})
add_definitions(${wxWidgets_DEFINITIONS})
add_definitions(-I/volumes/shared/work/const/wxwidgets-trunk/build/my-mac/lib/wx/include/osx_carbon-unicode-static-2.9 -I/volumes/shared/work/const/wxwidgets-trunk/include -D_FILE_OFFSET_BITS=64 -D__WXMAC__ -D__WXOSX__ -D__WXOSX_CARBON__)
target_link_libraries(${myPROJECT} ${wxWidgets_LIBRARIES})
STRING(REPLACE “wx_osx_carbonu_jpeg-2.9” “wxjpeg-2.9” wxWidgets_LIBRARIES “${wxWidgets_LIBRARIES}”)STRING(REPLACE “wx_osx_carbonu_png-2.9” “wxpng-2.9” wxWidgets_LIBRARIES “${wxWidgets_LIBRARIES}”)target_link_libraries(${myPROJECT} ${wxWidgets_LIBRARIES} -liconv)
March 22nd, 2010 at 2:11 am
Под винду не работает из-за бага в CMake 2.8 – юзай 2.6
То что не работает под маком – странно.
March 22nd, 2010 at 11:04 am
А чо за баг сказать можешь? под винду и под мак один и тот же баг – не работают add_definitions(${wxWidgets_DEFINITIONS}) – я подозреваю что просто в расширении – примитивный баг типа забыто двоеточие иди чего-то типа такого, может даже вот это решение
http://www.liveinternet.ru/users/doublef/post87807226/ 🙂 не разбирался.
Попробую 2.6 в следующий раз, спасибо.