У нас есть некоторый код, который прекрасно компилируется в Mac OS X с g ++ с использованием make-файлов, но я не могу собрать его успешно с Xcode.
Вот краткий обзор настроек проекта, есть примеры следующего:
libA.a
- содержит myclass_stub.cpp, который реализует func ()
- Наши make-файлы упаковывают библиотеку с помощью 'ar -r', которая позволяет заменять существующие методы.
- Xcode будет использовать libtool для упаковки
program.exe содержит myclass.cpp, который реализует func () какЧто ж.и связывает libA.a статически, используя g ++
Если бы я собирал libA.a и program.exe с Xcode, он жаловался на функцию «Duplicate symbol» в myclass_stub.o и myclass.o во время ссылки.
Я также попытался скомпилировать program.exe с Xcode и связать его с libA.a, который был упакован с 'ar -r', но он по-прежнему жалуется на дублирующийся символ.
Наличие дублированной реализации может быть не идеальным, но сейчас я не могу обойти это.Если бы я мог получить код для сборки из make-файлов, используя стандартные 'ar' и 'g ++', я хотел бы знать, какие параметры мне нужно установить в Xcode, чтобы он работал.
Теперь мои вопросы:
Я бы хотел использовать ar -r для упаковки библиотеки в Xcode.Является ли это возможным?Если так, то как?Есть ли аналогичная опция с libtool, где я могу принудительно заменить существующие символы?
Я полагаю, что разница между libtool и 'ar -r' может не быть основной разницей между сборкой с Xcodeи с make-файлами.У меня есть те же флаги компилятора, но список входных / объектных файлов, скорее всего, в другом порядке.Видите ли вы какие-либо другие возможные решения этой ошибки компоновки?
Я видел связанный с вопросом @ libtool vs ar для создания статической библиотеки (компоновщик xcode) ,но не решение
Кстати, я также пытался добавить all-load и --force-load, но, похоже, они мало что делают, так как я просто пытаюсь собрать для x86_64.