C++ 什么';这是构建Adobe的最简单方法;s XMP toolkit作为与OSX上的CMake共享的库?

C++ 什么';这是构建Adobe的最简单方法;s XMP toolkit作为与OSX上的CMake共享的库?,c++,macos,cmake,adobe,xmp,C++,Macos,Cmake,Adobe,Xmp,我正在整理一个小项目,它应该是跨平台的,用CMake构建,并且需要与(libxmp)链接。理想情况下,我希望CMake负责一次性构建依赖项,包括libxmp 不幸的是,XMP工具包设计为在OSX上使用XCode构建,在Linux上使用CMake构建。在OSX上,CMake构建过程似乎不是开箱即用的 为了在OSX上使用CMake进行构建,我可以对XMP工具包进行的最小更改是什么?我是否应该继续黑客攻击它直到它工作,或者这是一个已知/已解决的问题?而且,更一般地说,我应该对我自己的CMakeList

我正在整理一个小项目,它应该是跨平台的,用CMake构建,并且需要与(libxmp)链接。理想情况下,我希望CMake负责一次性构建依赖项,包括libxmp

不幸的是,XMP工具包设计为在OSX上使用XCode构建,在Linux上使用CMake构建。在OSX上,CMake构建过程似乎不是开箱即用的


为了在OSX上使用CMake进行构建,我可以对XMP工具包进行的最小更改是什么?我是否应该继续黑客攻击它直到它工作,或者这是一个已知/已解决的问题?而且,更一般地说,我应该对我自己的
CMakeLists.txt
文件添加哪些内容以将此项目与我自己的项目集成?

我今天学到了一些东西,一些误解显然已经消失了

在满足了第三方依赖性要求(expat和zlib;这只是将文件从源tarball提取到指定位置的问题)之后,当我意识到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"
)
它当然可以被巧妙处理,但这在其他方面确实“管用”


如果您使用的是XMP Toolkit 2016.07(在编写本文时,还没有更新的版本),并且拥有Xcode 10+&Mojave,那么在构建之前,您需要整合一些补丁:

  • 此外,如果您使用expat 2.2.2或更新版本:

  • 在expat的
    xmlparse.c
    顶部定义
    具有\u ARC4RANDOM\u BUF
    XML\u POOR\u ENTROPY
    (因为libxmp构建系统不会为您这样做)

  • 你是不熟悉CMake,还是不熟悉macOS&Xcode?@Eljay有点遗憾地说。