-
-
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
manage and switch global virtual environment in xrepo env/shell #1762
Comments
这两我记得原本就已经加了的。。
自己走 add_toolchains 配置下,也就一两行配置 |
只是msvc toolchain里面加了这俩,package的没加
这块不需要配置的话,想随时随地激活vs环境(例如在编译cmake项目时创建的build目录下)只需要创建一个空的xmake.lua就行,比现在简化太多了。 这块其实也可以不改,因为还有更好的做法,可以进一步搞一个全局环境配置放在
就行。这样基础环境发生更改,所有衍生环境也随之更改了。二是多人合作的项目,xmake.lua提交到云端就不用再改,用到的工具所有人在本地环境里面修改,项目和环境不再绑定在一起。之后xmake-repo支持gcc了,有人用gcc-5,有人用gcc-10,有人用gcc-11(都从xmake-repo安装),xmake.lua里面写 |
其实就是加个 xrepo env 的全局环境管理 |
include lib 我加了 添加环境配置文件$ xrepo env --add /xxx/base.lua 删除环境配置文件$ xrepo env --remove base 列举环境配置文件$ xrepo env -l/--list 绑定指定环境配置文件$ xrepo env -b base shell
$ xrepo env -b myenv shell
$ xrepo env -b base python --version
$ xrepo env -b "python 3.x" python --version |
这里脚本xrepo.bat/ps1/sh也要改,我这边研究一下,之后提pr过来;
|
find_package 暂时不加了 先 xrepo env 用着吧 |
这个先这样吧,回头有需要改进的,可以直接pr过来~ |
遇到一个问题:目前script里面获取一些信息都是用运行 |
这个要持久化缓存当前 bind 的环境状态了,可以走 |
感觉这样也不太行,同时可能有很多个shell激活不同的环境。用环境变量或许可以,如果存在对应的环境变量的话从环境变量取bind值 |
localcache 不是存在临时的fake project 里面的么,不是全局的,可以改进 _enter_project 对不同的 bind 进入不同 fake project dir 如果用户本地自己配了 xmake.lua ,那就也是本地 。。同时开多个 env 原本就不冲突,localcache 都是存在它们自己的 fake project cache |
我以为说的是当前目录的cache。cache放fake project问题在于,走script之后所有的命令都是用xmake lua接口+shell脚本完成的,bind信息一开始就无法传给xmake,更不用说创建fake project了 |
把info单独提出一个文件夹来,或者运行函数的时候可以有多个参数也可以解决 |
如果只要多参的话 原本就支持,info arg1 arg2 你挨个传就行了 |
你在什么场景下需要该功能?
https://gcc.gnu.org/onlinedocs/cpp/Environment-Variables.html
https://docs.microsoft.com/en-us/cpp/build/reference/i-additional-include-directories?view=msvc-160
https://docs.microsoft.com/en-us/cpp/build/reference/libpath-additional-libpath?view=msvc-160
msvc使用INCLUDE和LIB环境变量来声明额外的include/link path,gcc/ld使用CPATH(C_INCLUDE_PATH+CPLUS_INCLUDE_PATH)和LIBRARY_PATH;目前xmake的虚拟环境仅设置LD_LIBRARY_PATH,确保动态库可以链接,可以更进一步设置更多的环境变量,方便简单代码块的手动编译测试,以及在xrepo environment中使用其他构建系统(e.g. Makefile)
描述可能的解决方案
toolchain为msvc时添加INCLUDE和LIB环境变量;gcc、clang、mingw等设置CPATH和LIBRARY_PATH环境变量
其他信息
当前需要显式设置toolchain=msvc才能加载到msvc的环境;但虚拟环境的进入可以保证在运行
xmake config
之后,此时应该已经可以取出用到的所有toolchain才对。如果有用到msvc,就加载进入msvc环境,应该可以实现的meson对此的说明:
https://mesonbuild.com/Reference-manual_returned_compiler.html#returned-by
The text was updated successfully, but these errors were encountered: