-
-
Notifications
You must be signed in to change notification settings - Fork 784
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
v3.0 Roadmap #5527
Comments
Support dynamical script load, so we can distribute some xmake scripts by packages. This would be useful when sharing some scripts between projects. |
This key point is difficult to be implemented because the package is not yet installed when it is first compiled. We can currently only distribute packages rules. |
A better way for xmake packages to pull off info from their build xmake.lua, to avoid having to duplicate defines and such |
I think it is very important to improve the documentation, now the documentation of a few more serious problems |
支持对apt,pkg-config等系统库指定使用动态库或静态库 |
elements of targetRe-consider relationship of rules, toolchains, config variables, values and policies. Table below shows which entity can hold which element:
Optionshould option be a type of task, or just a object like value? should option checks itself? |
new document, https://docs.xmake.io/en-us/index.html But I don't have a lot of time alone to update and perfect it. |
Maybe we can use document generators like LDoc and embed the document into annotations. |
Supports specifying the use of dynamic libraries or static libraries for system libraries such as apt and pkg-config. |
Remove support for built-in variables in script scope, support it only in the description scope, Poll: #5529 |
A way to reuse rules in a project that uses xmake, but in a package definition without duplicating work. If such a thing requires some modifications on the lib side, that's fine. |
Rename |
Poll: #5533 |
For my project xmake-rs, I wanted xmake to send the resolved list of a target's links to the rust part. This way the user wouldn't need to link anything in the |
Use ninja generator for cmake package by default. |
Poll: #5545 |
Add a way to really clean everything. Sometimes, I need to delete |
|
A way to change config without having to respecify all config, maybe separate some configs such as mode from other configs. It's quite painful to work with a lot of config because of that. |
希望option域里面 能够支持 add_rules 接口 |
It is hoped that the add_rules interface can be supported in the option domain. |
希望定义option时可以直接指定default值,而不用这样再包一层 https://github.com/xmake-io/xmake-repo/blob/dev/packages/a/angle/port/6288/xmake.lua |
I hope that when defining options, I can directly specify the default value without having to wrap it up again https://github.com/xmake-io/xmake-repo/blob/dev/packages/a/angle/port/6288/xmake.lua |
原本就可以直接指定,这里的问题是你用了 is_plat ,想要在 option 里用,只能在脚本域。这个是本身机制决定的,没法在描述域实现 |
跑测试的时候,是否有必要把所有的config也测试到呢? 或者说写包描述的时候可以给config添加一个字段指定是否对这个config进行自动测试 |
这个不太现实,新增一个config ,排列组合下,ci 的测试 job 是数量级暴增的,一个 config 如果不是 boolean 值,是 string values 的,组合就更多, 还可能引入各种 deps 编译,没这么多资源,不仅耗时,耗ci资源,跑出问题,也没这么多人力修。 |
This is not realistic. If you add a new config, the number of ci test jobs will increase by orders of magnitude under the permutation and combination. Without so many resources, it will not only be time-consuming, but also consume ci resources. If problems occur, there will not be so many manpower to repair them. |
支持,现在的musl.cc工具链只能从linux上跨平台/架构编译。这个工具链能大大扩展交叉编译的能力 |
Supported, the current musl.cc toolchain can only be compiled cross-platform/architecture from Linux. This tool chain can greatly expand cross-compilation capabilities |
We can use |
New Poll: Autobuild when calling |
Now we can use |
我需要一个接口来遍历我的项目依赖的三方库的列表,我需要将三方库的二进制打包到我的安装包中。
但是这只能获取到三方库的库文件,对于一些拥有插件或者工具的三方库,例如gstreamer、ffmpeg、qt,我需要用到他们的工具和插件,并将其打包到安装包中。目前我没有办法做到直接从xmake的脚本域中找到它们 又或者为package的包管理中添加一个on_export_runtime(),可以用于一键导出三方库的运行时? |
I need an interface to traverse the list of third-party libraries that my project depends on, and I need to package the binaries of the third-party libraries into my installation package.
But this can only obtain the library files of third-party libraries. For some third-party libraries with plug-ins or tools, such as gstreamer, ffmpeg, and qt, I need to use their tools and plug-ins and package them into the installation package. Currently I have no way to find them directly from xmake's script domain Or add an on_export_runtime() to the package management of the package, which can be used to export the runtime of third-party libraries with one click? |
这种问题,没必要在这里问,可以到 discussion 里提,target:pkgs() ,pkg:installdir() 原本就能取到。 |
There is no need to ask this kind of question here. You can mention it in the discussion. Target:pkgs() and pkg:installdir() can be obtained originally. |
I also want it, something like a file |
那xmake-repo里的包,如何适配c51或者sdcc工具链,同时不影响默认工具链的编译? |
|
How would you feel about having add_requires("xx", { configs = { foo = "bar" } }) automatically add add_requireconfs("**.xx", { configs = { foo = "bar" }}) ? Also add_requires("libsdl 2.30") would add add_requireconfs("**.libsdl", { version = "2.30" }}) This way, package config and versions would automatically replicate to their dependencies as well, because currently: add_requires("libsdl 2.28", "libsdl_ttf") will make xmake install this:
same goes for add_requires("libsdl", { configs = {sdlmain = false}})
add_requires("libsdl_ttf") =>
it's been a long time I've been thinking about making a feature request for a policy for this, and I think it would be a great default to have that in xmake 3.0. what do you think? (also thinking about it, |
The |
But in the examples I'm showing this is already causing many issues, if you decide to use libsdl as a shared library, libsdl_ttf will use it as a static library causing bugs (libsdl uses global variables which would not be the same between libsdl and libsdl_ttf in that case). Another example would be openssl, if you use package locking for example and you're locking your openssl package version, it won't lock it as a dependency (and openssl is used by many packages). Having that behavior as an opt-out seems safer to me |
so we should use
This is just another issue about requires-lock. We can improve requires-lock instead of add_requires.
However, two completely independent targets can be bound to different versions of OpenSSL. If their dependency behaviors are globally modified through add_requires, these unrelated targets will all be affected.
In the future, I will try to improve and solve this problem, but not by modifying the default behavior of add_requires. Modifying it would lead to even more problems than now. |
I understand even though I don't agree on the current behavior being safer than what I suggest (especially because it causes subtle bugs one can fix only with advanced xmake usage and knowing how libs depends on each other, my students fall in this trap every year). (About package lock, the issue arise simply when you set a package version through add_requires, at best it duplicates symbols and at worst it causes weird bugs in your app) How about having this behavior as an opt-in policy? Because even though we can already do this using add_requireconfs, it means duplicating every add_requires with a add_requireconfs which is redundant and more error-prone. |
I haven't figured out how to improve and solve it yet. You can open an issue first. |
这个+1,甚至希望 |
Assuming target A depends on target B, the On the other hand, |
If there are proposed changes that you would like to see introduced in xmake v3.0, you can submit them here.
It will be adopted if the vote result >= 80%.
we can use
set_policy("compatibility.version", "3.0")
orxmake f --policies=compatibility.version:3.0
to attempt v3.0Roadmap (Adopted)
Roadmap (Draft)
xmake run
The text was updated successfully, but these errors were encountered: