首页 > 解决方案 > CMake - 如何跨平台链接到 ExternalProject_Add 生成的库?

问题描述

我的项目依赖于基于 CMake 的库,作为外部项目包含在 中ExternalProject_Add,如下所示:

ExternalProject_Add(
    mylibrary
    SOURCE_DIR ${CMAKE_SOURCE_DIR}/path/to/my/library/source
    INSTALL_COMMAND "")

然后我获取BINARY_DIRandSOURCE_DIR属性并将它们传递给包含/链接的最终目标:

ExternalProject_Get_Property(mylibrary BINARY_DIR)
ExternalProject_Get_Property(mylibrary SOURCE_DIR)

target_link_libraries(myproject PRIVATE ${BINARY_DIR}/libmylibrary${CMAKE_STATIC_LIBRARY_SUFFIX})
target_include_directories(myproject PRIVATE ${SOURCE_DIR})

问题:BINARY_DIR在 XCode 上编译整个项目时似乎是错误的,而在 Linux 上是可以的。macOS 中此类变量的调试打印:

/Users/me/myproject/build/mylibrary-prefix/src/mylibrary-build

虽然实际文件驻留在

/Users/me/myproject/build/mylibrary-prefix/src/mylibrary-build/Debug

这当然会破坏最后的链接阶段,因为链接器找不到要链接的库。我不确定这是 CMake 错误(不太可能)还是我的配置中的错误(可能):任何指针?

标签: c++xcodemacoscmake

解决方案


推荐阅读