mingw64, emacs的windows版本就是用mingw64编译打包的
ucrt64
不过emacs 还是得在 mingw64下编,ucrt运行时好像没正式支持,编的时候也有点小问题
用mingw64和msys2,想用 UCRT,但Emacs还没完全支持在这环境下编译。
看了大家的回答,感觉现在还没到可以完全放下基于 msvcrt 的 mingw64 去使用基于 ucrt 的 ucrt64 的时机。话说有什么办法可以在开发时同时用两个 Environment 么?
MSYS2 不是有了 UCRT64 版本的 Emacs 么?
https://packages.msys2.org/package/mingw-w64-ucrt-x86_64-emacs?repo=ucrt64
MSYS2 自己说用 MSVCRT 和 UCRT 的最好不要混用,意味着 UCRT64 和 MINGW64 的程序也最好别混用了,所以这个 mingw-w64-ucrt-x86_64-emacs 应该是用 UCRT64 编译出来的吧?
ucrt估计是msys2维护者patch了emacs源码才编译出来的,我这边编译ucrt emacs直接报头文找不到。。
是的
MSYS 打了 patch,不过就算打了最后编译完也会有 warning,输出内容大概是 although compiled, Emacs is not functional,可以自己试试。我之前试过。
发现了 mingw64 环境的一个坑:bin 文件夹必须添加到系统环境变量的 PATH 中而不是用户环境变量的 PATH 中,否则 VSCode 就无法运行编译出来程序并且终端返回值不为零。
然而根据微软自己的说法,ucrt64 的添加到用户环境变量的 PATH 中就没有问题:
In your User variables, select the
Path
variable and then select Edit.
不建议把mingw的环境加到外部windows系统的PATH环境里面,在某些情况下会踩坑,特别是如果你用xmake之类包管理器的时候,她会根据环境变量的先后顺序混用不同的库文件
但不这么做用 vscode 这类软件貌似找不到编译器吧?
CLion 可以添加工具链。
Emacs 好像可以用 ELisp 加 PATH,但在 Emacs 运行调试的时候能找到动态链接库么(没试过,不确定)?
win上如果用vscode写代码的话肯定得生成compile_commands.json。不然还得手动去把msys的库文件路径啥的加进来,使用第三方库很不方便
。
要生成compile_commands.json,用xmake很方便,可以指定工具链,不存在找不到的情况
这个只能管编译,管不了链接吧?
xmake 没听说过,这个用的很多么?我能在 xmake 里调用别人的 cmake 项目么,还是说只能把项目分成两部分分别构建?
你试试就知道了,个人觉得xmake是解决了c/c++开发的痛点。有问题反馈处理也很快
xmake = 构建工具(cmake) + 包管理器(vcpkg/conan)
xmake可以调cmake,有问题可以去tg群提问,开发者是国人,已经开发很多年了