Возможно, это очень очевидная вещь, но я застрял при попытке создать bsdtar , который использует пользовательскую версию сборки liblzma.dylib , поэтому я могу поделиться и двоичный файл bsdtar, и библиотека liblzma.dylib вместе.
Спасибо Комментарий Цыварева , я создаю bsdtar с кастомным dylib, просто вызываю:
cmake -DCMAKE_PREFIX_PATH=customlib
Больше не нужно использовать FIND_PACKAGE(liblzma HINTS customlib customlib/include)
или подобное. Во время процесса cmake вывод выглядит так:
-- Looking for lzma_auto_decoder in /libarchive-3.3.2/customlib/liblzma.dylib
-- Looking for lzma_auto_decoder in /libarchive-3.3.2/customlib/liblzma.dylib - found
-- Looking for lzma_easy_encoder in /libarchive-3.3.2/customlib/liblzma.dylib
-- Looking for lzma_easy_encoder in /libarchive-3.3.2/customlib/liblzma.dylib - found
-- Looking for lzma_lzma_preset in /libarchive-3.3.2/customlib/liblzma.dylib
-- Looking for lzma_lzma_preset in /libarchive-3.3.2/customlib/liblzma.dylib - found
-- Found LibLZMA: /libarchive-3.3.2/customlib/include (found version "5.2.3")
В любом случае, в окончательной сборке bsdtar по-прежнему ищется системный dylib, а не пользовательский:
aone$ otool -L libarchive-3.3.2/bin/bsdtar
libarchive-3.3.2/bin/bsdtar:
/usr/lib/libz.1.dylib (compatibility version 1.0.0, current version 1.2.5)
/usr/lib/libbz2.1.0.dylib (compatibility version 1.0.0, current version 1.0.5)
/usr/local/lib/liblzma.5.dylib (compatibility version 8.0.0, current version 8.3.0)
...
Папка customlib содержит liblzma.5.dylib , ее псевдоним liblzma.dylib и liblzma.a . Папка customlib / import содержит lzma.h и lzma папку с остальными заголовками.
Кто-нибудь знает, как это сделать правильно? Заранее спасибо.
Просто спросил здесь: https://github.com/libarchive/libarchive/issues/1014