来自库的 CMake link_directories

2024-05-04

我正在尝试使用 CMake 和 Xcode 从另一个库链接到一个库。 这对任何图书馆来说都是一个问题,但为了让事情更容易传达,让我们使用zlib举个例子。

这似乎适用于可执行文件,如下所示:

LINK_DIRECTORIES(${LIB_DIR}/zlib/build/)
ADD_EXECUTABLE(MY_EXECUTABLE ...

它会生成一个 Xcode 项目,其设置如下所示:

如您所见,$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)位被正确添加到zlib库路径。

但如果我尝试这样做:

LINK_DIRECTORIES(${LIB_DIR}/zlib/build/)
ADD_LIBRARY(MY_LIBRARY ...

zlib永远不会链接到MY_EXECUTABLE当我将它链接到MY_LIBRARY

And TARGET_LINK_LIBRARIES after ADD_LIBRARY允许我链接到zlib from MY_LIBRARY但我必须指定完整路径,这将不起作用,因为配置(调试、发布等)以及有效平台(iphoneos、iphonesimulator 等)都是因素。

我想做的是拥有zlib添加到 Xcode 库搜索路径,其中$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)位,如上图。


将我的评论变成答案

CMake 确实支持将适当的配置添加到多配置环境中的路径中生成器表达式 http://www.cmake.org/cmake/help/v3.3/manual/cmake-generator-expressions.7.html#informational-expressions(参见例如CMake - 访问多配置生成器的配置参数 https://stackoverflow.com/questions/29045385/cmake-accessing-configuration-parameters-of-multiple-configuration-generators)

和论据目标链接库() http://www.cmake.org/cmake/help/v3.3/command/target_link_libraries.html支持使用生成器表达式。所以在你的情况下你可以利用$<CONFIG>生成器表达式看起来像这样:

TARGET_LINK_LIBRARIES(MY_LIBRARY ${LIB_DIR}/zlib/build/$<CONFIG>/...)

请注意 - 如果您可能更改了某些政策 - 来自target_link_libraries()有关政策的文档CMP0003 - 通过完整路径链接的库不再生成链接器搜索路径 http://www.cmake.org/cmake/help/v3.3/policy/CMP0003.html#policy:CMP0003 and CMP0004 - 链接的库可能没有前导或尾随空格 http://www.cmake.org/cmake/help/v3.3/policy/CMP0004.html#policy:CMP0004:

但请注意,生成器表达式不会在 OLD 中使用 CMP0003 或 CMP0004 的处理

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

来自库的 CMake link_directories 的相关文章

随机推荐

  • 带有自定义按钮的 ExtJs 消息框

    如何使用自定义按钮显示 ExtJS 消息框 我想要一个带有自定义消息以及 取消 和 停用 按钮的消息框 请给一些想法 buttons text Cancel handler function Ext MessageBox hide subm
  • 创建应用程序:无法初始化 ORM

    当我启动节点时 我总是收到此错误 请回复我我哪里出错了 错误 创建应用程序 无法初始化 ORM initializeORM NewORM 无法初始化 DB 无法打开 application name Chainlink 0 10 7 7C
  • 比较 Swift 中的 AnyObjects,无需将它们转换为特定类型

    尝试使用 Equatable 协议中定义的 运算符来比较 AnyObject 类型的两个对象会导致 Swift 中出现编译错误 有没有人找到一种方法来比较这些对象 而不知道可用于向下转换的对象的真实类型 这个问题的背景是我有一个字典 Dic
  • Cordova 插件不适用于 Ionic

    我正在 Angular 中构建一个 Ionic 应用程序 但一直无法让插件工作 例如 我尝试使用状态栏插件 如下所述 http ionicframework com tutorials fullscreen apps http ionicf
  • Excel - 使用 FILTERXML 从字符串中提取子字符串

    Background 最近 我一直在尝试更熟悉将分隔字符串更改为 XML 以使用 Excel 进行解析的概念FILTERXML https support microsoft com en us office filterxml funct
  • 节点获取映射错误 - 无法读取未定义的属性“映射””

    当我尝试运行 地图 部分时出现错误无法读取未定义的属性 地图 The customersconst 已在上面声明 所以不确定 未定义是从哪里来的 地图需要声明吗 const AWS require aws sdk ses new AWS S
  • Google App Engine 不解析 JSF 2.0 标签

    我在 AppEngine 上运行 JSF 2 0 时遇到问题 我有以下index xhtml如果我部署它并打开页面 除了Title并且该页面的源代码与编写时完全相同 没有任何更改
  • STL 映射值构造函数

    我有一个类 X 我想将其放入 std map 类型的 STL 映射中 STL 映射需要将 X 存储在内存中的某个位置 因此我正在寻找一种有效的 运行时和内存 方法来创建 X 并将其存储在映射中 我注意到以下代码 其中 x 是 X 类型的对象
  • isinstance 如何用于 List?

    我试图了解 Python 的类型注释是如何工作的 例如List and Dict not list or dict 具体来说 我感兴趣的是如何isinstance list List 有效 这样我就可以创建自己的自定义注释 我看到List定
  • php 时间戳 UTC

    我有一个 PHP MySQL 查询 它将一些数据插入 MySQL 数据库 并且包含时间戳 目前INSERT查询用途NOW 对于时间戳列 它以以下格式保存在数据库中 2012 07 24 13 13 02 不幸的是 对我来说 服务器不在我的时
  • 如何将主页包含在 Sphinx 目录中?

    假设我有一个 Sphinx 项目 其来源如下 index rst installation rst templating index rst module rst fieldtype rst index rst 主页 具有以下目录树 toc
  • Mongoid 3 - 检查复合键的唯一性

    我切换到 Mongoid 3 这使得一些事情有所不同 目前我尝试检查复合字段是否唯一 class Host include Mongoid Document field ip type gt String field port type g
  • 如何让 CSS3 渐变跨越整个页面的高度,而不仅仅是视口?

    我有一个跨浏览器的 CSS 渐变 如下所示 background background 1E5799 old browsers background moz linear gradient top 002c5a 0 79d6f4 100 f
  • 在Python中通过引用传递引用

    python 中是否可以通过引用传递引用 在C 中 可以通过向数据传递指针来模仿Python传递数据的模型 指针按值传递 函数可以更改它指向的任何内容 但函数不能更改指针的值 但是 在 C 中 您还可以传递对指针的引用 在这种情况下 您可以
  • 在 Ruby 中,如何生成一长串重复文本?

    在 ruby 中快速生成长字符串的最佳方法是什么 这有效 但速度非常慢 str length 100000 1 length each i str 0 我还注意到 创建一个适当长度的字符串 然后将其附加到现有字符串直至所需的长度 速度会更快
  • pygame.display.set_mode() 到底做了什么?

    我最近开始使用 pygame python 库 我只是想看看我是否理解正确 以下是设置窗口的一些代码 在这行中说 windowSurface pygame display set mode WINDOWWIDTH WINDOWHEIGHT
  • 仅给出后序构造完整二叉树?

    我正在尝试构建一个完整的二叉树 完整的意思是每个非叶节点都有两个叶节点连接到它 即node gt right and node gt left are NULL 仅给出树的后序遍历 另外 我还知道后序遍历中的节点是否是叶节点 给定的后序遍历
  • Python 正则表达式与 re.findall 一起使用时返回匹配的一部分

    我一直在尝试自学 Python 目前正在学习正则表达式 我一直使用的教学文本似乎旨在教授 Perl 或其他非 Python 语言 因此我必须对表达式进行一些调整以适应 Python 然而 我经验不足 并且在尝试让表达式发挥作用时遇到了障碍
  • Subversion 中的忽略文件会从 svn:ignore 属性中删除旧值

    我有一个 Subversion 工作副本G csmdepot 构建其中有不同的文件 有些被忽略 有些则没有 我忽略了 Tortoise 的文件 Build 1 wimignored Build 2 wimignored WimID xml
  • 来自库的 CMake link_directories

    我正在尝试使用 CMake 和 Xcode 从另一个库链接到一个库 这对任何图书馆来说都是一个问题 但为了让事情更容易传达 让我们使用zlib举个例子 这似乎适用于可执行文件 如下所示 LINK DIRECTORIES LIB DIR zl