Привалило мне тут счастье в виде халтурки по клонированию одной утилиты с винды на мак. Поскольку я давно мечтал портировать свой софт под мак (я же пишу на вхВиджетс!) не долго думая согласился. Поставил систему (установка 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})
Прошлось далать две ветви – одна под винду , вторая для APPLE, команда
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__)
то есть указал то что мне выдает wx-config –cppflags…
5. дальше имена библиотек, опять все через тернии – по нормальному. так :
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)
Вот такие пироги.
P.S. Если вдруг есть кто знакомый с программированием под мак, и желающий провести небольшой экскурс\поотвечать в аське (#264684674) на глупые вопросы, буду признателен – а то тут так много непонятного :)))