Делаем всё по инструкции, ставим на винду Cmake, POedit, нужен ли NSIS непонятно, скачиваем и стоим wxWidgets-3.0.2 (обе конфигурации debug и release), затем прописываем переменные окружения:
берем OpenCPN из Git и запускаем CMake GUI через батник с прописанными путями:
PATH=%PATH%;D:\Lib\wxWidgets-3.0.2;C:\Program Files (x86)\Poedit\GettextTools\bin C: cd "C:\Program Files (x86)\CMake" "C:\Program Files (x86)\CMake\bin\cmake-gui.exe"
открываем и стоим OpenCPN\build\OpenCPN.sln в VS2013
Запускаем под дебагером с ключом /p, что значит portable:
после первого запуска надо прописать OpenGL=1 в файле opencpn.ini, в этом случае в коде будет установлен флажок g_bopengl и для отрисовки карты будет вызываться следующая функция:
void glChartCanvas::OnPaint( wxPaintEvent &event ) { wxPaintDC dc( this ); Show( g_bopengl ); ... // Recursion test, sometimes seen on GTK systems when wxBusyCursor is activated if( m_in_glpaint ) return; m_in_glpaint++; Render(); m_in_glpaint--; }
в коде в 8-ми файлах есть условная компиляция по дефайну ocpnUSE_GLES (судя по всему, они с этим дефайном собирают проект под Android):
#ifndef ocpnUSE_GLES // linestipple is emulated poorly if( !strncmp( str, "DASH", 4 ) ) { glLineStipple( 1, 0x3F3F ); glEnable( GL_LINE_STIPPLE ); } else if( !strncmp( str, "DOTT", 4 ) ) { glLineStipple( 1, 0x3333 ); glEnable( GL_LINE_STIPPLE ); } else glDisable( GL_LINE_STIPPLE ); #endif
этот дефайн по умолчанию не установлен, его надо где-то включить для всего solution:
главное окно приложения выглядит следующим образом:
Полезные ссылки: