Что мне нужно:
- обернуть библиотеку C++ на основе boost в Objective-C++;
- создайте приложение Cocoa, используя эту библиотеку Objective-C++.
Что я имею:
- встроенный boost 1.46.1 (динамический .dylib и статический варианты .a);
- Проект Xcode библиотеки C++ (на основе boost, завернутый в Objective-C);
- Проект Xcode конечного приложения с библиотекой, связанной как подпроект (цель приложения зависит от библиотеки).
Мои вопросы:
- Когда я создаю приложение, двоичный файл результата составляет 15–20 МБ, а промежуточная библиотека - 100 МБ. Как это можно объяснить?
- Окончательное приложение (в любом варианте) при запуске использует библиотеки boost из системной папки (я вижу это в мониторе активности, в разделе «Информация о процессе»> «Открыть файлы и порты»). Как этого избежать? Или как создать полностью автономное, независимое от библиотек и фреймворков приложение?
Еще немного деталей:
- Я пытался связать с библиотекой варианты .dylib и .a — промежуточная библиотека — 100 МБ, приложение — 15 МБ;
- Пробовал использовать .framework вместо статической библиотеки .a — фреймворк 15 МБ, приложение с фреймворком 30 МБ;
- Я пытался создать чистое приложение командной строки на C++ (функционально эквивалентное приложению + библиотека Objective-C) — размер бинарного файла составляет 15 МБ;
- библиотека использует только часть boost (filesytem, iostream, program_options, system, threads) + несколько системных dylib;
- Я использую Xcode 4.2, Mac OS X 10.6 SDK, вариант x86_64;
- протестировано с компиляторами LLVM GCC 4.2, Apple LLVM 3.0, GCC 4.2;
- проверено с помощью Strip Debug Symbols YES и NO, Удаление мертвого кода YES и NO, Генерация символов отладки YES и NO, Уровень оптимизации -O0 и -Os, Скрытые встроенные методы YES и NO, Символы, скрытые по умолчанию YES и NO.