Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

macosx/iOS需要支持从XCode的里SDK/usr/lib中去find_packages #598

Closed
L1MeN9Yu opened this issue Oct 18, 2019 · 11 comments
Closed

macosx/iOS需要支持从XCode的里SDK/usr/lib中去find_packages #598

L1MeN9Yu opened this issue Oct 18, 2019 · 11 comments

Comments

@L1MeN9Yu
Copy link

L1MeN9Yu commented Oct 18, 2019

现状

在Apple的平台下,find_packages目前只支持从/usr/lib/,/usr/local/等目录中查找。

存在的问题

从Xcode10开始,Command Line Tools将安装在Xcode的目录中,xcode_10_release_notes
所以当 platforn=macosx 时,只能通过安装 system wide Command Line Tools 或者 brew 安装的方式去 link 需要的 lib ,当 platforn=iOS 时,貌似无法 link 到需要的lib了(因为iOS系统版本的不一致,系统中的 lib 版本也存在着差异,所以一般尽量选择使用系统内的 lib)。

Feature request

  1. 支持从 Xcode 的 SDK 目录中 find_packages.
  2. 支持tbd格式的 lib.
@L1MeN9Yu
Copy link
Author

理论上 LDFlags 应该是直接支持 tbd 格式的吧?

@waruqi
Copy link
Member

waruqi commented Oct 18, 2019

默认link ,只要加了 add_links("zlib") 都会自动从系统link的,你得说清楚,是find_packages默认不支持xcode找tbd的库。。

因为只有 find_packages和add_requires才会有这个影响,跟add_links/add_syslinks没啥关系

@waruqi waruqi changed the title macosx/iOS需要支持从XCode的里SDK/usr/lib中link macosx/iOS需要支持从XCode的里SDK/usr/lib中去find_packages Oct 18, 2019
@waruqi waruqi added this to the v2.2.9 milestone Oct 22, 2019
@waruqi
Copy link
Member

waruqi commented Oct 22, 2019

dev上我已经对 macos/iphoneos xcode sdk下 *.tbd的查找做了支持,你可以更新下试试,xmake update dev

xmake l find_packages zlib的查找顺序:

  1. homebrew
  2. pkg-config
  3. /usr and /usr/local
  4. macos xcode sdk / *.tbd

并且如果是iphoneos/watchos下编译, 也可以找到对应arch的库

@L1MeN9Yu
Copy link
Author

image

image

看起来还是没找到。。。

@waruqi
Copy link
Member

waruqi commented Oct 23, 2019

你执行下 xmake l find_packages system::zlib 或者 xmake l find_packages system::z 看看呢

由于zlib无法直接通过libzlib.a 来获取库名,目前是先通过 pkg-config 获取到 z ,然后去找 libz.a的。。

可能你这pkg-config无法通过zlib获取到 z link ,你可以先手动试试 xmake l find_packages system::z

@L1MeN9Yu
Copy link
Author

xmake l find_packages system::z

{
  {
    links = {
      "z"
    },
    linkdirs = {
      "/usr/lib"
    }
  }
}

@waruqi
Copy link
Member

waruqi commented Oct 23, 2019

那就是你这 pkg-config zlib 找不到 导致没获取到 z ,这个要特殊处理下 find_zlib.lua ,回头我改进下,但是不影响其他 lib 在 tbd中的查找。

@L1MeN9Yu
Copy link
Author

OK
那可以指定find_packages的本地路径吗?

@waruqi
Copy link
Member

waruqi commented Oct 23, 2019

find_packages("xxx", {includedirs = {"xxx", "xxx"}, linkdirs = {"xxx", "xxx"}})

@waruqi
Copy link
Member

waruqi commented Oct 23, 2019

我改进了下 find_zlib ,你再更新下试试,xmake update -s dev

xmake l find_packages zlib

@L1MeN9Yu
Copy link
Author

xmake l find_packages zlib

{
  {
    links = {
      "z"
    },
    linkdirs = {
      "/usr/lib"
    }
  }
}

赞~

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants