我正在整理一个应该是跨平台的,由CMake构建的小项目,它需要与Adobe's XMP toolkit( libxmp )链接。理想情况下,我希望CMake一口气建立依赖关系,包括 libxmp 。
不幸的是,XMP工具包被设计为使用OSX上的XCode和Linux上的CMake构建。在OSX上,CMake的构建过程似乎不是开箱即用的。
我可以对XMP工具包进行最小的更改,以使其在OSX上与CMake一起构建吗?我是否应该一直坚持下去直到它起作用,否则这是一个已知/已解决的问题吗?而且,更一般而言,我应该在自己的CMakeLists.txt
文件中添加哪些内容以将该项目与自己的文件集成在一起?
答案 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"
)
当然可以罚款,但是这样做确实“行之有效”。