Какой самый простой способ создать инструментарий Adobe XMP в качестве общей библиотеки с CMake на OSX?

Я собираю небольшой проект, который должен быть кроссплатформенным, построен на CMake, и он должен быть связан с Adobe XMP инструментарий (libxmp). В идеале я бы хотел, чтобы CMake отвечал за построение зависимостей, в том числе libxmp, одним махом.

К сожалению, инструментарий XMP разработан для сборки с XCode в OSX и CMake в Linux. Процесс сборки CMake, похоже, не работает «из коробки» на OSX.

Какое минимальное изменение я могу внести в инструментарий XMP, чтобы он собирался с CMake для OSX? Должен ли я просто продолжать взламывать его, пока он не сработает, или это известная / решенная проблема? И, в целом, какие дополнения я должен сделать к своему собственному CMakeLists.txt файл для интеграции этого проекта с моим собственным?

0

Решение

Сегодня я узнал кое-что, и некоторые заблуждения явно испарились.

После выполнения сторонних требований к зависимостям (expat и zlib; это всего лишь вопрос извлечения файлов из исходных архивов в указанное место), это было довольно легко, когда я понял, что XCode можно использовать здесь из командной строки и что XMP Собственная «система сборки» имеет достаточно инструментов, чтобы сделать все, что мне нужно.

Короче говоря, из build каталог:

./cmake.command 64 Dynamic WarningAsError ToolchainLLVM.cmake
cd xcode/dynamic/intel_64
xcodebuild -scheme ALL_BUILD build

Затем файлы рамок находятся в public/libraries/macintosh/intel_64/Debugи включены были уже доступны под public/include,

После некоторой либеральной ссылки в моем собственном проекте CMakeLists.txt это просто вопрос:

target_compile_definitions(myProject
PUBLIC
MAC_ENV
)

target_include_directories(
myProject
PRIVATE
include/libxmp
)

# Add build dir to path for finding frameworks (libmxp)
set_target_properties(
myProject
PROPERTIES
LINK_FLAGS "-Wl,-F${CMAKE_BINARY_DIR}/Frameworks")

target_link_libraries(
myProject
PRIVATE
catch
"-framework XMPCore""-framework XMPFiles")

Это, конечно, может быть утонченным, но в противном случае это «просто работает».

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]