c++ - CMake - 如何跨平台链接到 ExternalProject_Add 生成的库?
问题描述
我的项目依赖于基于 CMake 的库,作为外部项目包含在 中ExternalProject_Add
,如下所示:
ExternalProject_Add(
mylibrary
SOURCE_DIR ${CMAKE_SOURCE_DIR}/path/to/my/library/source
INSTALL_COMMAND "")
然后我获取BINARY_DIR
andSOURCE_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 错误(不太可能)还是我的配置中的错误(可能):任何指针?
解决方案
推荐阅读
- amazon-web-services - 解压后的大小必须小于 262144000 字节 - AWS Lambda 错误
- javascript - react-bootstrap Navbar 在 React js 中无法正确渲染
- apache-spark - 数组元素的总和取决于值条件pyspark
- vbscript - 执行删除脚本时出现错误的参数数量错误或错误的属性分配错误:'objFolder.Files.Item'
- java - 替换 jar 并重定向导入语句
- c# - db接口问题c#
- javascript - 使用 Javascript 触发和反转 CSS 过渡
- arrays - 角度重新格式化数组
- oracle - 我需要更改 VO.xml 中的列名。但更改并未反映在应用程序中
- c# - 我应该在 IdentityServer 中更改声明的颁发者吗?