Сегодня я узнал несколько вещей, и некоторые неправильные представления, по-видимому, испарились.
После выполнения требований к зависимостям сторонних производителей (expat и zlib; это всего лишь вопрос извлечения файлов из исходных архивов вназначенного местоположения), это было довольно легко, когда я понял, что XCode можно использовать здесь из командной строки, и что собственная «система сборки» XMP имеет достаточно инструментов, чтобы делать все, что мне нужно.
Короче говоря, из build
directory:
./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"
)
Конечно, это может быть утончено, но в противном случае это просто "работает".
Если вы используете XMP Toolkit2016.07 (и, на момент написания, более новой версии нет) и Xcode 10+ и Mojave, вам нужно собрать несколько патчей перед сборкой:
- Исправление определения версии Xcode
- Исправление конфигурации stdlib
- Исправления псевдонимов типа карты / пары
Кроме того, если вы используете expat 2.2.2 или новее:
- Определите
HAVE_ARC4RANDOM_BUF
или XML_POOR_ENTROPY
в верхней части expat 's xmlparse.c
(поскольку система сборки libxmp не сделает этого за вас)