We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
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
packagedeps
目前只有import("package.tools.cmake").install(package)才支持packagedeps,而且支持的方式是cmake特定的。然而,利用环境变量 #1762 ,只需要对不同的编译器msvc/gcc设置环境变量就可以让依赖包被当作系统包一样处理,所以可以实现对不同的安装方法都支持的packagedeps参数。
import("package.tools.cmake").install(package)
现在对autoconf的packagedeps是这么实现:
local cflags = {} local ldflags = {} for _, dep in ipairs(package:orderdeps()) do local fetchinfo = dep:fetch() if fetchinfo then for _, includedir in ipairs(fetchinfo.includedirs or fetchinfo.sysincludedirs) do table.insert(cflags, "-I" .. includedir) end for _, linkdir in ipairs(fetchinfo.linkdirs) do table.insert(ldflags, "-L" .. linkdir) end for _, link in ipairs(fetchinfo.links) do table.insert(ldflags, "-l" .. link) end end end import("package.tools.autoconf").install(package, configs, {cflags = cflags, ldflags = ldflags})
对meson的packagedeps是这么实现:
local envs = meson.buildenvs(package) if package:is_plat("windows") then for _, dep in ipairs(package:orderdeps()) do local fetchinfo = dep:fetch() if fetchinfo then for _, includedir in ipairs(fetchinfo.includedirs or fetchinfo.sysincludedirs) do envs.INCLUDE = (envs.INCLUDE or "") .. path.envsep() .. includedir end for _, linkdir in ipairs(fetchinfo.linkdirs) do envs.LIB = (envs.LIB or "") .. path.envsep() .. linkdir end end end end meson.install(package, configs, {envs = envs})
现在对xmake的项目也可以用环境变量支持 #1776 实际上完全不需要使用构建工具特定的方法来传入第三方依赖,直接用环境变量模拟系统包即可
添加一个通用的
import("package.tools.utils").buildenvs(envs, {packagedeps={...}})
之后调用就可以直接从环境变量
import("package.tools.xxx") import("package.tools.utils") local envs = xxx.buildenvs(package) envs = utils.buildenvs(envs, {packagedeps={...}}) xxx.install(package, configs, {envs=envs})
同时如果对某些包环境变量不生效了,还可以切回构建工具特定的packagedeps实现
使用环境变量提供meson/autoconf/make/nmake等工具的packagedeps
The text was updated successfully, but these errors were encountered:
对其他的加上也是可以的,不管还是看时间吧,最近没啥搞头,都没时间碰电脑。。
Sorry, something went wrong.
这个加可以加,但是我感觉不同构建工具 对环境变量的适配力度 还是多少会有差异,就但 autoconf 里面就遇到过一些坑,需要特殊绕下才能过掉部分检测。。cmake/meson 能否在相同环境envs 支持到相同效果还难说,只能等后续压测后才知道。。
短期内,还是得挨个构建工具加自己的 buildenvs,通用的可以也放个,暂时做测试
而且 还有一些 cmake 等特有的 buildenvs,CMAKE_PREFIX_PATH 等等,用纯通用 buildenvs,还是没法完全替换,到最后还得做 buildenvs 的 merge。。
autoconf 的 packagedeps 我已经加上了
meson 的 packagedeps 我也加上了,不过这个我没测试验证,按理可以,你可以试试,有问题请及时反馈,这里先 close 了
No branches or pull requests
你在什么场景下需要该功能?
目前只有
import("package.tools.cmake").install(package)
才支持packagedeps,而且支持的方式是cmake特定的。然而,利用环境变量 #1762 ,只需要对不同的编译器msvc/gcc设置环境变量就可以让依赖包被当作系统包一样处理,所以可以实现对不同的安装方法都支持的packagedeps参数。现在对autoconf的packagedeps是这么实现:
对meson的packagedeps是这么实现:
现在对xmake的项目也可以用环境变量支持 #1776 实际上完全不需要使用构建工具特定的方法来传入第三方依赖,直接用环境变量模拟系统包即可
描述可能的解决方案
添加一个通用的
之后调用就可以直接从环境变量
同时如果对某些包环境变量不生效了,还可以切回构建工具特定的packagedeps实现
描述你认为的候选方案
使用环境变量提供meson/autoconf/make/nmake等工具的packagedeps
The text was updated successfully, but these errors were encountered: