Я собираю небольшой проект, который должен быть кроссплатформенным, построен на CMake, и он должен быть связан с Adobe XMP инструментарий (libxmp). В идеале я бы хотел, чтобы CMake отвечал за построение зависимостей, в том числе libxmp, одним махом.
К сожалению, инструментарий XMP разработан для сборки с XCode в OSX и CMake в Linux. Процесс сборки CMake, похоже, не работает «из коробки» на OSX.
Какое минимальное изменение я могу внести в инструментарий XMP, чтобы он собирался с CMake для OSX? Должен ли я просто продолжать взламывать его, пока он не сработает, или это известная / решенная проблема? И, в целом, какие дополнения я должен сделать к своему собственному CMakeLists.txt
файл для интеграции этого проекта с моим собственным?
Сегодня я узнал кое-что, и некоторые заблуждения явно испарились.
После выполнения сторонних требований к зависимостям (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")
Это, конечно, может быть утонченным, но в противном случае это «просто работает».
Других решений пока нет …