在OSX上通过CMake将Adobe XMP工具包构建为共享库的最简单方法是什么?

时间:2018-10-18 17:36:56

标签: c++ macos cmake adobe xmp

我正在整理一个应该是跨平台的,由CMake构建的小项目,它需要与Adobe's XMP toolkit libxmp )链接。理想情况下,我希望CMake一口气建立依赖关系,包括 libxmp

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

我可以对XMP工具包进行最小的更改,以使其在OSX上与CMake一起构建吗?我是否应该一直坚持下去直到它起作用,否则这是一个已知/已解决的问题吗?而且,更一般而言,我应该在自己的CMakeLists.txt文件中添加哪些内容以将该项目与自己的文件集成在一起?

1 个答案:

答案 0 :(得分:1)

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

满足第三方依赖项要求(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"
)

当然可以罚款,但是这样做确实“行之有效”。