【分享】让 Windows 支持 emacs-libvterm

最近写了一个 https://github.com/xhcoding/conpty-proxy ,原理就是用 conpty 的方式启动进程,然后将进程的输入输出重定向到 conxy-proxy 的 stdin 和 stdout ,写这个的目的就是让 emacs-libvterm 能够在 Windows 上工作。

实际效果: UTF8 输出, 完美支持 pwsh + oh-my-posh,

btm 命令,复杂布局测试

速度会比终端慢一点,但完全够用,有兴趣的朋友可以先使用我个人分支 xhcoding/emacs-libvterm: Emacs libvterm integration , 我也提了 PR ,等合并后就可以用主线了

18 个赞

兄弟牛的。其实 neovim 也用的 vterm 库实现的内置终端,但是老早就支持 windows 了。可惜的是人菜,只知道 neovim 有 solution,但是没研究方案和改进代码的能力。

帅,zsbd

\o/ 哇~~
请问题主的Windows libtool 怎么安装? 现在编译 Cmake 表示找不到 libtools

Neovim好像在讨论要不要转投libghostty

1 个赞

conpty 就是参考了 neovim 和 vscode 用的 node-pty 的代码

用 msys2 编译的话可以这样安装 pacman -S base-devel mingw-w64-x86_64-toolchain

你好, 我已经在 Windows 具有了 libtool, 但是不是来自 msys2, 而是来自: LibTool for Windows

现在编译遇到:

-- System libvterm not found: libvterm will be downloaded and compiled as part of the build process
-- Configuring done (0.4s)
-- Generating done (0.1s)
-- Build files have been written to: C:/Users/adminuirs/AppData/Roaming/.emacs.d/elpaca/builds/vterm/build
[  5%] Performing update step for 'conpty-proxy'
-- Already at requested tag: v1.0.0
[ 10%] No patch step for 'conpty-proxy'
[ 15%] Performing configure step for 'conpty-proxy'
-- Configuring done (0.2s)
-- Generating done (0.0s)
-- Build files have been written to: C:/Users/adminuirs/AppData/Roaming/.emacs.d/elpaca/builds/vterm/build/conpty-proxy-prefix/src/conpty-proxy-build
[ 20%] Performing build step for 'conpty-proxy'
[ 50%] Building C object CMakeFiles/conpty_proxy.dir/conpty_proxy.c.obj
C:/Users/adminuirs/AppData/Roaming/.emacs.d/elpaca/builds/vterm/build/conpty-proxy-prefix/src/conpty-proxy/conpty_proxy.c:52:5: error: unknown type name 'HPCON'; did you mean 'HICON'?
   52 |     HPCON hpc;
      |     ^~~~~
      |     HICON
C:/Users/adminuirs/AppData/Roaming/.emacs.d/elpaca/builds/vterm/build/conpty-proxy-prefix/src/conpty-proxy/conpty_proxy.c:74:79: error: unknown type name 'HPCON'; did you mean 'HICON'?
   74 | static HRESULT(WINAPI* g_create_pseudo_console)(COORD, HANDLE, HANDLE, DWORD, HPCON*);
      |                                                                               ^~~~~
      |                                                                               HICON
C:/Users/adminuirs/AppData/Roaming/.emacs.d/elpaca/builds/vterm/build/conpty-proxy-prefix/src/conpty-proxy/conpty_proxy.c:75:55: error: expected ')' before 'COORD'
   75 | static HRESULT(WINAPI* g_resize_pseudo_console)(HPCON, COORD);
      |                                                       ^~~~~~
      |                                                       )
C:/Users/adminuirs/AppData/Roaming/.emacs.d/elpaca/builds/vterm/build/conpty-proxy-prefix/src/conpty-proxy/conpty_proxy.c:76:1: error: parameter names (without types) in function declaration [-Wdeclaration-missing-parameter-type]
   76 | static void(WINAPI* g_close_pseudo_console)(HPCON);
      | ^~~~~~
C:/Users/adminuirs/AppData/Roaming/.emacs.d/elpaca/builds/vterm/build/conpty-proxy-prefix/src/conpty-proxy/conpty_proxy.c: In function 'conpty_api_init':
C:/Users/adminuirs/AppData/Roaming/.emacs.d/elpaca/builds/vterm/build/conpty-proxy-prefix/src/conpty-proxy/conpty_proxy.c:97:59: error: 'g_create_pseudo_console' undeclared (first use in this function); did you mean 'g_close_pseudo_console'?
   97 |     } conpty_fns[] = {{"CreatePseudoConsole", (FARPROC*) &g_create_pseudo_console},
      |                                                           ^~~~~~~~~~~~~~~~~~~~~~~
      |                                                           g_close_pseudo_console
C:/Users/adminuirs/AppData/Roaming/.emacs.d/elpaca/builds/vterm/build/conpty-proxy-prefix/src/conpty-proxy/conpty_proxy.c:97:59: note: each undeclared identifier is reported only once for each function it appears in
C:/Users/adminuirs/AppData/Roaming/.emacs.d/elpaca/builds/vterm/build/conpty-proxy-prefix/src/conpty-proxy/conpty_proxy.c:98:59: error: 'g_resize_pseudo_console' undeclared (first use in this function); did you mean 'g_close_pseudo_console'?
   98 |                       {"ResizePseudoConsole", (FARPROC*) &g_resize_pseudo_console},
      |                                                           ^~~~~~~~~~~~~~~~~~~~~~~
      |                                                           g_close_pseudo_console
C:/Users/adminuirs/AppData/Roaming/.emacs.d/elpaca/builds/vterm/build/conpty-proxy-prefix/src/conpty-proxy/conpty_proxy.c: In function 'conpty_init':
C:/Users/adminuirs/AppData/Roaming/.emacs.d/elpaca/builds/vterm/build/conpty-proxy-prefix/src/conpty-proxy/conpty_proxy.c:149:10: error: implicit declaration of function 'g_create_pseudo_console'; did you mean 'g_close_pseudo_console'? [-Wimplicit-function-declaration]
  149 |     hr = g_create_pseudo_console(size, in_read, out_write, 0, &pty->hpc);
      |          ^~~~~~~~~~~~~~~~~~~~~~~
      |          g_close_pseudo_console
C:/Users/adminuirs/AppData/Roaming/.emacs.d/elpaca/builds/vterm/build/conpty-proxy-prefix/src/conpty-proxy/conpty_proxy.c: In function 'conpty_spawn':
C:/Users/adminuirs/AppData/Roaming/.emacs.d/elpaca/builds/vterm/build/conpty-proxy-prefix/src/conpty-proxy/conpty_proxy.c:214:39: error: passing argument 4 of 'UpdateProcThreadAttribute' makes pointer from integer without a cast [-Wint-conversion]
  214 |                                    pty->hpc, sizeof(pty->hpc), NULL, NULL)) {
      |                                    ~~~^~~~~
      |                                       |
      |                                       int
In file included from F:/App/Scoop/apps/mingw-winlibs-llvm-ucrt/14.2.0-18.1.8-12.0.0-r1/x86_64-w64-mingw32/include/winbase.h:29,
                 from F:/App/Scoop/apps/mingw-winlibs-llvm-ucrt/14.2.0-18.1.8-12.0.0-r1/x86_64-w64-mingw32/include/windows.h:70,
                 from C:/Users/adminuirs/AppData/Roaming/.emacs.d/elpaca/builds/vterm/build/conpty-proxy-prefix/src/conpty-proxy/conpty_proxy.c:1:
F:/App/Scoop/apps/mingw-winlibs-llvm-ucrt/14.2.0-18.1.8-12.0.0-r1/x86_64-w64-mingw32/include/processthreadsapi.h:240:144: note: expected 'PVOID' {aka 'void *'} but argument is of type 'int'
  240 |   WINBASEAPI WINBOOL WINAPI UpdateProcThreadAttribute (LPPROC_THREAD_ATTRIBUTE_LIST lpAttributeList, DWORD dwFlags, DWORD_PTR Attribute, PVOID lpValue, SIZE_T cbSize, PVOID lpPreviousValue, PSIZE_T lpReturnSize);
      |                                                                                                                                          ~~~~~~^~~~~~~
C:/Users/adminuirs/AppData/Roaming/.emacs.d/elpaca/builds/vterm/build/conpty-proxy-prefix/src/conpty-proxy/conpty_proxy.c: In function 'on_ctrl_accept':
C:/Users/adminuirs/AppData/Roaming/.emacs.d/elpaca/builds/vterm/build/conpty-proxy-prefix/src/conpty-proxy/conpty_proxy.c:269:5: error: implicit declaration of function 'g_resize_pseudo_console'; did you mean 'g_close_pseudo_console'? [-Wimplicit-function-declaration]
  269 |     g_resize_pseudo_console(pty->hpc, size);
      |     ^~~~~~~~~~~~~~~~~~~~~~~
      |     g_close_pseudo_console
make[5]: *** [CMakeFiles/conpty_proxy.dir/build.make:76: CMakeFiles/conpty_proxy.dir/conpty_proxy.c.obj] Error 1
make[4]: *** [CMakeFiles/Makefile2:83: CMakeFiles/conpty_proxy.dir/all] Error 2
make[3]: *** [makefile:91: all] Error 2
make[2]: *** [CMakeFiles/conpty-proxy.dir/build.make:86: conpty-proxy-prefix/src/conpty-proxy-stamp/conpty-proxy-build] Error 2
make[1]: *** [CMakeFiles/Makefile2:141: CMakeFiles/conpty-proxy.dir/all] Error 2
make: *** [makefile:91: all] Error 2
/c/Users/adminuirs/AppData/Roaming/.emacs.d/elpaca/builds/vterm

请问我是缺少安装什么依赖吗?

不需要什么依赖,看着像是编译环境问题, conpty_proxy 只有一个 .c 文件,你试试直接调用 gcc 能不能编译

gcc -Wall -Werror -municode conpty_proxy.c  -o conpty_proxy.exe

兄弟🐮啊,Windows也支持上了。不过,PowerShell的启动速度太慢了,不知道你用oh-my-posh是什么样的体验

我其实不用 powershell ,上面那个 oh-my-posh 只是测试 conpty-proxy 能不能支持 UTF-8 字符。

我平时用 mobxterm 的 ssh 工具连接很多 linux 服务器,conpty-proxy 可以启动 ssh 进程,这样 vterm 就是一个 ssh 客户端,借助 emacs 强大的扩展性,慢慢就可以取代 mobxterm 了。

一个例子:

(defun my/wsl2 ()
  "连接到 WSL2 "
  (interactive)
  (let ((vterm-shell "ssh.exe -P 5000 [email protected]")
        (vterm-buffer-name "wsl2-ubuntu"))
    (call-interactively #'vterm)))

编译不了, 编译有错误:

> gcc -Wall -Werror -municode conpty_proxy.c  -o conpty_proxy.exe
conpty_proxy.c:52:5: error: unknown type name 'HPCON'; did you mean 'HICON'?
   52 |     HPCON hpc;
      |     ^~~~~
      |     HICON
conpty_proxy.c:74:79: error: unknown type name 'HPCON'; did you mean 'HICON'?
   74 | static HRESULT(WINAPI* g_create_pseudo_console)(COORD, HANDLE, HANDLE, DWORD, HPCON*);
      |                                                                               ^~~~~
      |                                                                               HICON
conpty_proxy.c:75:55: error: expected ')' before 'COORD'
   75 | static HRESULT(WINAPI* g_resize_pseudo_console)(HPCON, COORD);
      |                                                       ^~~~~~
      |                                                       )
conpty_proxy.c:76:1: error: parameter names (without types) in function declaration [-Wdeclaration-missing-parameter-type]
   76 | static void(WINAPI* g_close_pseudo_console)(HPCON);
      | ^~~~~~
conpty_proxy.c: In function 'conpty_api_init':
conpty_proxy.c:97:59: error: 'g_create_pseudo_console' undeclared (first use in this function); did you mean 'g_close_pseudo_console'?
   97 |     } conpty_fns[] = {{"CreatePseudoConsole", (FARPROC*) &g_create_pseudo_console},
      |                                                           ^~~~~~~~~~~~~~~~~~~~~~~
      |                                                           g_close_pseudo_console
conpty_proxy.c:97:59: note: each undeclared identifier is reported only once for each function it appears in
conpty_proxy.c:98:59: error: 'g_resize_pseudo_console' undeclared (first use in this function); did you mean 'g_close_pseudo_console'?
   98 |                       {"ResizePseudoConsole", (FARPROC*) &g_resize_pseudo_console},
      |                                                           ^~~~~~~~~~~~~~~~~~~~~~~
      |                                                           g_close_pseudo_console
conpty_proxy.c: In function 'conpty_init':
conpty_proxy.c:149:10: error: implicit declaration of function 'g_create_pseudo_console'; did you mean 'g_close_pseudo_console'? [-Wimplicit-function-declaration]
  149 |     hr = g_create_pseudo_console(size, in_read, out_write, 0, &pty->hpc);
      |          ^~~~~~~~~~~~~~~~~~~~~~~
      |          g_close_pseudo_console
conpty_proxy.c: In function 'conpty_spawn':
conpty_proxy.c:214:39: error: passing argument 4 of 'UpdateProcThreadAttribute' makes pointer from integer without a cast [-Wint-conversion]
  214 |                                    pty->hpc, sizeof(pty->hpc), NULL, NULL)) {
      |                                    ~~~^~~~~
      |                                       |
      |                                       int
In file included from F:/App/Scoop/apps/mingw-winlibs-llvm-ucrt/14.2.0-18.1.8-12.0.0-r1/x86_64-w64-mingw32/include/winbase.h:29,
                 from F:/App/Scoop/apps/mingw-winlibs-llvm-ucrt/14.2.0-18.1.8-12.0.0-r1/x86_64-w64-mingw32/include/windows.h:70,
                 from conpty_proxy.c:1:
F:/App/Scoop/apps/mingw-winlibs-llvm-ucrt/14.2.0-18.1.8-12.0.0-r1/x86_64-w64-mingw32/include/processthreadsapi.h:240:144: note: expected 'PVOID' {aka 'void *'} but argument is of type 'int'
  240 |   WINBASEAPI WINBOOL WINAPI UpdateProcThreadAttribute (LPPROC_THREAD_ATTRIBUTE_LIST lpAttributeList, DWORD dwFlags, DWORD_PTR Attribute, PVOID lpValue, SIZE_T cbSize, PVOID lpPreviousValue, PSIZE_T lpReturnSize);
      |
                                                ~~~~~~^~~~~~~
conpty_proxy.c: In function 'on_ctrl_accept':
conpty_proxy.c:269:5: error: implicit declaration of function 'g_resize_pseudo_console'; did you
mean 'g_close_pseudo_console'? [-Wimplicit-function-declaration]
  269 |     g_resize_pseudo_console(pty->hpc, size);
      |     ^~~~~~~~~~~~~~~~~~~~~~~
      |     g_close_pseudo_console

Windows 版本是多少,估计还是编译环境的问题 我优化了一下 emacs-libvterm,把 conpty_proxy.exe 放到 PATH 路径下,就不用编译了. 编译好的 conpty_proxy.exe 可以在 Releases · xhcoding/conpty-proxy 下载

我的 Windows 10 系统: 22H2 19045.3324

然后我根据你的指示下载了你仓库下的 conpty_proxy.exe 并放到 PATH(已知可以使用 eshell 找到 conpty_proxy), 也是你仓库最新的 emacs-libvterm, 然后编译:

-- System libvterm not found: libvterm will be downloaded and compiled as part of the build process
-- Use system conpty: F:/App/emacs/bin/conpty_proxy.exe
-- Configuring done (0.4s)
-- Generating done (0.0s)
-- Build files have been written to: C:/Users/adminuirs/AppData/Roaming/.emacs.d/elpaca/builds/vterm/build
[  8%] Performing update step for 'libvterm'
-- Already at requested ref: 64f1775952dbe001e989f2ab679563b54f2fca55
[ 16%] No patch step for 'libvterm'
[ 25%] No configure step for 'libvterm'
[ 33%] Performing build step for 'libvterm'
[ 41%] No install step for 'libvterm'
[ 50%] Completed 'libvterm'
[ 66%] Built target libvterm
[ 75%] Building C object CMakeFiles/vterm-module.dir/vterm-module.c.obj
[ 83%] Building C object CMakeFiles/vterm-module.dir/elisp.c.obj
[ 91%] Linking C shared module C:/Users/adminuirs/AppData/Roaming/.emacs.d/elpaca/builds/vterm/vterm-module.dll
F:/App/Scoop/apps/mingw-winlibs-llvm-ucrt/14.2.0-18.1.8-12.0.0-r1/bin/../lib/gcc/x86_64-w64-mingw32/14.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: CMakeFiles/vterm-module.dir/objects.a(vterm-module.c.obj): in function `Fvterm_new':
C:/Users/adminuirs/AppData/Roaming/.emacs.d/elpaca/builds/vterm/vterm-module.c:1243:(.text+0x1b5): undefined reference to `vterm_new'
F:/App/Scoop/apps/mingw-winlibs-llvm-ucrt/14.2.0-18.1.8-12.0.0-r1/bin/../lib/gcc/x86_64-w64-mingw32/14.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:/Users/adminuirs/AppData/Roaming/.emacs.d/elpaca/builds/vterm/vterm-module.c:1244:(.text+0x1c5): undefined reference to `vterm_set_utf8'
F:/App/Scoop/apps/mingw-winlibs-llvm-ucrt/14.2.0-18.1.8-12.0.0-r1/bin/../lib/gcc/x86_64-w64-mingw32/14.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:/Users/adminuirs/AppData/Roaming/.emacs.d/elpaca/builds/vterm/vterm-module.c:1246:(.text+0x1cd): undefined reference to `vterm_obtain_screen'
F:/App/Scoop/apps/mingw-winlibs-llvm-ucrt/14.2.0-18.1.8-12.0.0-r1/bin/../lib/gcc/x86_64-w64-mingw32/14.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:/Users/adminuirs/AppData/Roaming/.emacs.d/elpaca/builds/vterm/vterm-module.c:1248:(.text+0x1d9): undefined reference to `vterm_obtain_state'
F:/App/Scoop/apps/mingw-winlibs-llvm-ucrt/14.2.0-18.1.8-12.0.0-r1/bin/../lib/gcc/x86_64-w64-mingw32/14.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:/Users/adminuirs/AppData/Roaming/.emacs.d/elpaca/builds/vterm/vterm-module.c:1249:(.text+0x1ee): undefined reference to `vterm_state_set_unrecognised_fallbacks'
F:/App/Scoop/apps/mingw-winlibs-llvm-ucrt/14.2.0-18.1.8-12.0.0-r1/bin/../lib/gcc/x86_64-w64-mingw32/14.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:/Users/adminuirs/AppData/Roaming/.emacs.d/elpaca/builds/vterm/vterm-module.c:1252:(.text+0x210): undefined reference to `vterm_state_set_selection_callbacks'
F:/App/Scoop/apps/mingw-winlibs-llvm-ucrt/14.2.0-18.1.8-12.0.0-r1/bin/../lib/gcc/x86_64-w64-mingw32/14.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:/Users/adminuirs/AppData/Roaming/.emacs.d/elpaca/builds/vterm/vterm-module.c:1255:(.text+0x21c): undefined reference to `vterm_state_set_bold_highbright'
F:/App/Scoop/apps/mingw-winlibs-llvm-ucrt/14.2.0-18.1.8-12.0.0-r1/bin/../lib/gcc/x86_64-w64-mingw32/14.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:/Users/adminuirs/AppData/Roaming/.emacs.d/elpaca/builds/vterm/vterm-module.c:1257:(.text+0x22a): undefined reference to `vterm_screen_reset'
F:/App/Scoop/apps/mingw-winlibs-llvm-ucrt/14.2.0-18.1.8-12.0.0-r1/bin/../lib/gcc/x86_64-w64-mingw32/14.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:/Users/adminuirs/AppData/Roaming/.emacs.d/elpaca/builds/vterm/vterm-module.c:1258:(.text+0x23d): undefined reference to `vterm_screen_set_callbacks'
F:/App/Scoop/apps/mingw-winlibs-llvm-ucrt/14.2.0-18.1.8-12.0.0-r1/bin/../lib/gcc/x86_64-w64-mingw32/14.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:/Users/adminuirs/AppData/Roaming/.emacs.d/elpaca/builds/vterm/vterm-module.c:1259:(.text+0x24b): undefined reference to `vterm_screen_set_damage_merge'
F:/App/Scoop/apps/mingw-winlibs-llvm-ucrt/14.2.0-18.1.8-12.0.0-r1/bin/../lib/gcc/x86_64-w64-mingw32/14.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:/Users/adminuirs/AppData/Roaming/.emacs.d/elpaca/builds/vterm/vterm-module.c:1260:(.text+0x259): undefined reference to `vterm_screen_enable_altscreen'
F:/App/Scoop/apps/mingw-winlibs-llvm-ucrt/14.2.0-18.1.8-12.0.0-r1/bin/../lib/gcc/x86_64-w64-mingw32/14.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: CMakeFiles/vterm-module.dir/objects.a(vterm-module.c.obj): in function `cell_rgb_color':
C:/Users/adminuirs/AppData/Roaming/.emacs.d/elpaca/builds/vterm/vterm-module.c:873:(.text+0x7c9): undefined reference to `vterm_obtain_state'
F:/App/Scoop/apps/mingw-winlibs-llvm-ucrt/14.2.0-18.1.8-12.0.0-r1/bin/../lib/gcc/x86_64-w64-mingw32/14.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:/Users/adminuirs/AppData/Roaming/.emacs.d/elpaca/builds/vterm/vterm-module.c:874:(.text+0x7d8): undefined reference to `vterm_state_get_palette_color'
F:/App/Scoop/apps/mingw-winlibs-llvm-ucrt/14.2.0-18.1.8-12.0.0-r1/bin/../lib/gcc/x86_64-w64-mingw32/14.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: CMakeFiles/vterm-module.dir/objects.a(vterm-module.c.obj): in function `Fvterm_write_input':
C:/Users/adminuirs/AppData/Roaming/.emacs.d/elpaca/builds/vterm/vterm-module.c:1361:(.text+0x923): undefined reference to `vterm_input_write'
F:/App/Scoop/apps/mingw-winlibs-llvm-ucrt/14.2.0-18.1.8-12.0.0-r1/bin/../lib/gcc/x86_64-w64-mingw32/14.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:/Users/adminuirs/AppData/Roaming/.emacs.d/elpaca/builds/vterm/vterm-module.c:1362:(.text+0x92c): undefined reference to `vterm_screen_flush_damage'
F:/App/Scoop/apps/mingw-winlibs-llvm-ucrt/14.2.0-18.1.8-12.0.0-r1/bin/../lib/gcc/x86_64-w64-mingw32/14.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: CMakeFiles/vterm-module.dir/objects.a(vterm-module.c.obj): in function `is_eol':
C:/Users/adminuirs/AppData/Roaming/.emacs.d/elpaca/builds/vterm/vterm-module.c:236:(.text+0xfcf): undefined reference to `vterm_screen_is_eol'
F:/App/Scoop/apps/mingw-winlibs-llvm-ucrt/14.2.0-18.1.8-12.0.0-r1/bin/../lib/gcc/x86_64-w64-mingw32/14.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: CMakeFiles/vterm-module.dir/objects.a(vterm-module.c.obj): in function `fetch_cell':
C:/Users/adminuirs/AppData/Roaming/.emacs.d/elpaca/builds/vterm/vterm-module.c:203:(.text+0x1064): undefined reference to `vterm_obtain_state'
F:/App/Scoop/apps/mingw-winlibs-llvm-ucrt/14.2.0-18.1.8-12.0.0-r1/bin/../lib/gcc/x86_64-w64-mingw32/14.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:/Users/adminuirs/AppData/Roaming/.emacs.d/elpaca/builds/vterm/vterm-module.c:204:(.text+0x1076): undefined reference to `vterm_state_get_default_colors'
F:/App/Scoop/apps/mingw-winlibs-llvm-ucrt/14.2.0-18.1.8-12.0.0-r1/bin/../lib/gcc/x86_64-w64-mingw32/14.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: CMakeFiles/vterm-module.dir/objects.a(vterm-module.c.obj): in function `goto_col':
C:/Users/adminuirs/AppData/Roaming/.emacs.d/elpaca/builds/vterm/vterm-module.c:273:(.text+0x10ca): undefined reference to `vterm_get_size'
F:/App/Scoop/apps/mingw-winlibs-llvm-ucrt/14.2.0-18.1.8-12.0.0-r1/bin/../lib/gcc/x86_64-w64-mingw32/14.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: CMakeFiles/vterm-module.dir/objects.a(vterm-module.c.obj): in function `term_finalize':
C:/Users/adminuirs/AppData/Roaming/.emacs.d/elpaca/builds/vterm/vterm-module.c:1071:(.text+0x16b9): undefined reference to `vterm_free'
F:/App/Scoop/apps/mingw-winlibs-llvm-ucrt/14.2.0-18.1.8-12.0.0-r1/bin/../lib/gcc/x86_64-w64-mingw32/14.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: CMakeFiles/vterm-module.dir/objects.a(vterm-module.c.obj): in function `compare_cells':
C:/Users/adminuirs/AppData/Roaming/.emacs.d/elpaca/builds/vterm/vterm-module.c:676:(.text+0x1908): undefined reference to `vterm_color_is_equal'
F:/App/Scoop/apps/mingw-winlibs-llvm-ucrt/14.2.0-18.1.8-12.0.0-r1/bin/../lib/gcc/x86_64-w64-mingw32/14.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:/Users/adminuirs/AppData/Roaming/.emacs.d/elpaca/builds/vterm/vterm-module.c:676:(.text+0x1c97): undefined reference to `vterm_color_is_equal'
F:/App/Scoop/apps/mingw-winlibs-llvm-ucrt/14.2.0-18.1.8-12.0.0-r1/bin/../lib/gcc/x86_64-w64-mingw32/14.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:/Users/adminuirs/AppData/Roaming/.emacs.d/elpaca/builds/vterm/vterm-module.c:677:(.text+0x1ce1): undefined reference to `vterm_color_is_equal'
F:/App/Scoop/apps/mingw-winlibs-llvm-ucrt/14.2.0-18.1.8-12.0.0-r1/bin/../lib/gcc/x86_64-w64-mingw32/14.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:/Users/adminuirs/AppData/Roaming/.emacs.d/elpaca/builds/vterm/vterm-module.c:677:(.text+0x1d49): undefined reference to `vterm_color_is_equal'
F:/App/Scoop/apps/mingw-winlibs-llvm-ucrt/14.2.0-18.1.8-12.0.0-r1/bin/../lib/gcc/x86_64-w64-mingw32/14.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: CMakeFiles/vterm-module.dir/objects.a(vterm-module.c.obj): in function `adjust_topline':
C:/Users/adminuirs/AppData/Roaming/.emacs.d/elpaca/builds/vterm/vterm-module.c:518:(.text+0x2285): undefined reference to `vterm_obtain_state'
F:/App/Scoop/apps/mingw-winlibs-llvm-ucrt/14.2.0-18.1.8-12.0.0-r1/bin/../lib/gcc/x86_64-w64-mingw32/14.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:/Users/adminuirs/AppData/Roaming/.emacs.d/elpaca/builds/vterm/vterm-module.c:520:(.text+0x2292): undefined reference to `vterm_state_get_cursorpos'
F:/App/Scoop/apps/mingw-winlibs-llvm-ucrt/14.2.0-18.1.8-12.0.0-r1/bin/../lib/gcc/x86_64-w64-mingw32/14.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: CMakeFiles/vterm-module.dir/objects.a(vterm-module.c.obj): in function `Fvterm_set_size':
C:/Users/adminuirs/AppData/Roaming/.emacs.d/elpaca/builds/vterm/vterm-module.c:1382:(.text+0x2565): undefined reference to `vterm_set_size'
F:/App/Scoop/apps/mingw-winlibs-llvm-ucrt/14.2.0-18.1.8-12.0.0-r1/bin/../lib/gcc/x86_64-w64-mingw32/14.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:/Users/adminuirs/AppData/Roaming/.emacs.d/elpaca/builds/vterm/vterm-module.c:1383:(.text+0x256e): undefined reference to `vterm_screen_flush_damage'
F:/App/Scoop/apps/mingw-winlibs-llvm-ucrt/14.2.0-18.1.8-12.0.0-r1/bin/../lib/gcc/x86_64-w64-mingw32/14.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: CMakeFiles/vterm-module.dir/objects.a(vterm-module.c.obj): in function `term_flush_output':
C:/Users/adminuirs/AppData/Roaming/.emacs.d/elpaca/builds/vterm/vterm-module.c:887:(.text+0x2834): undefined reference to `vterm_output_get_buffer_current'
F:/App/Scoop/apps/mingw-winlibs-llvm-ucrt/14.2.0-18.1.8-12.0.0-r1/bin/../lib/gcc/x86_64-w64-mingw32/14.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: CMakeFiles/vterm-module.dir/objects.a(vterm-module.c.obj): in function `term_process_key':
C:/Users/adminuirs/AppData/Roaming/.emacs.d/elpaca/builds/vterm/vterm-module.c:923:(.text+0x296f): undefined reference to `vterm_keyboard_key'
F:/App/Scoop/apps/mingw-winlibs-llvm-ucrt/14.2.0-18.1.8-12.0.0-r1/bin/../lib/gcc/x86_64-w64-mingw32/14.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: CMakeFiles/vterm-module.dir/objects.a(vterm-module.c.obj): in function `term_flush_output':
C:/Users/adminuirs/AppData/Roaming/.emacs.d/elpaca/builds/vterm/vterm-module.c:890:(.text+0x29af): undefined reference to `vterm_output_read'
F:/App/Scoop/apps/mingw-winlibs-llvm-ucrt/14.2.0-18.1.8-12.0.0-r1/bin/../lib/gcc/x86_64-w64-mingw32/14.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: CMakeFiles/vterm-module.dir/objects.a(vterm-module.c.obj): in function `term_process_key':
C:/Users/adminuirs/AppData/Roaming/.emacs.d/elpaca/builds/vterm/vterm-module.c:935:(.text+0x2a22): undefined reference to `vterm_keyboard_key'
F:/App/Scoop/apps/mingw-winlibs-llvm-ucrt/14.2.0-18.1.8-12.0.0-r1/bin/../lib/gcc/x86_64-w64-mingw32/14.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:/Users/adminuirs/AppData/Roaming/.emacs.d/elpaca/builds/vterm/vterm-module.c:1017:(.text+0x2e57): undefined reference to `vterm_keyboard_unichar'
F:/App/Scoop/apps/mingw-winlibs-llvm-ucrt/14.2.0-18.1.8-12.0.0-r1/bin/../lib/gcc/x86_64-w64-mingw32/14.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:/Users/adminuirs/AppData/Roaming/.emacs.d/elpaca/builds/vterm/vterm-module.c:939:(.text+0x2ecd): undefined reference to `vterm_keyboard_key'
F:/App/Scoop/apps/mingw-winlibs-llvm-ucrt/14.2.0-18.1.8-12.0.0-r1/bin/../lib/gcc/x86_64-w64-mingw32/14.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:/Users/adminuirs/AppData/Roaming/.emacs.d/elpaca/builds/vterm/vterm-module.c:941:(.text+0x2ee2): undefined reference to `vterm_keyboard_key'
F:/App/Scoop/apps/mingw-winlibs-llvm-ucrt/14.2.0-18.1.8-12.0.0-r1/bin/../lib/gcc/x86_64-w64-mingw32/14.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: CMakeFiles/vterm-module.dir/objects.a(vterm-module.c.obj): in function `term_clear_scrollback':
C:/Users/adminuirs/AppData/Roaming/.emacs.d/elpaca/builds/vterm/vterm-module.c:899:(.text+0x2f10): undefined reference to `vterm_screen_flush_damage'
F:/App/Scoop/apps/mingw-winlibs-llvm-ucrt/14.2.0-18.1.8-12.0.0-r1/bin/../lib/gcc/x86_64-w64-mingw32/14.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: CMakeFiles/vterm-module.dir/objects.a(vterm-module.c.obj): in function `term_process_key':
C:/Users/adminuirs/AppData/Roaming/.emacs.d/elpaca/builds/vterm/vterm-module.c:933:(.text+0x2f77): undefined reference to `vterm_keyboard_key'
F:/App/Scoop/apps/mingw-winlibs-llvm-ucrt/14.2.0-18.1.8-12.0.0-r1/bin/../lib/gcc/x86_64-w64-mingw32/14.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:/Users/adminuirs/AppData/Roaming/.emacs.d/elpaca/builds/vterm/vterm-module.c:925:(.text+0x2fe2): undefined reference to `vterm_keyboard_key'
F:/App/Scoop/apps/mingw-winlibs-llvm-ucrt/14.2.0-18.1.8-12.0.0-r1/bin/../lib/gcc/x86_64-w64-mingw32/14.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:/Users/adminuirs/AppData/Roaming/.emacs.d/elpaca/builds/vterm/vterm-module.c:920:(.text+0x3014): undefined reference to `vterm_keyboard_key'
F:/App/Scoop/apps/mingw-winlibs-llvm-ucrt/14.2.0-18.1.8-12.0.0-r1/bin/../lib/gcc/x86_64-w64-mingw32/14.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:/Users/adminuirs/AppData/Roaming/.emacs.d/elpaca/builds/vterm/vterm-module.c:918:(.text+0x302b): undefined reference to `vterm_keyboard_end_paste'
F:/App/Scoop/apps/mingw-winlibs-llvm-ucrt/14.2.0-18.1.8-12.0.0-r1/bin/../lib/gcc/x86_64-w64-mingw32/14.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:/Users/adminuirs/AppData/Roaming/.emacs.d/elpaca/builds/vterm/vterm-module.c:916:(.text+0x306f): undefined reference to `vterm_keyboard_start_paste'
F:/App/Scoop/apps/mingw-winlibs-llvm-ucrt/14.2.0-18.1.8-12.0.0-r1/bin/../lib/gcc/x86_64-w64-mingw32/14.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:/Users/adminuirs/AppData/Roaming/.emacs.d/elpaca/builds/vterm/vterm-module.c:927:(.text+0x3084): undefined reference to `vterm_keyboard_key'
F:/App/Scoop/apps/mingw-winlibs-llvm-ucrt/14.2.0-18.1.8-12.0.0-r1/bin/../lib/gcc/x86_64-w64-mingw32/14.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:/Users/adminuirs/AppData/Roaming/.emacs.d/elpaca/builds/vterm/vterm-module.c:931:(.text+0x3099): undefined reference to `vterm_keyboard_key'
F:/App/Scoop/apps/mingw-winlibs-llvm-ucrt/14.2.0-18.1.8-12.0.0-r1/bin/../lib/gcc/x86_64-w64-mingw32/14.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:/Users/adminuirs/AppData/Roaming/.emacs.d/elpaca/builds/vterm/vterm-module.c:937:(.text+0x30ae): undefined reference to `vterm_keyboard_key'
F:/App/Scoop/apps/mingw-winlibs-llvm-ucrt/14.2.0-18.1.8-12.0.0-r1/bin/../lib/gcc/x86_64-w64-mingw32/14.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:/Users/adminuirs/AppData/Roaming/.emacs.d/elpaca/builds/vterm/vterm-module.c:943:(.text+0x30c3): undefined reference to `vterm_keyboard_key'
F:/App/Scoop/apps/mingw-winlibs-llvm-ucrt/14.2.0-18.1.8-12.0.0-r1/bin/../lib/gcc/x86_64-w64-mingw32/14.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:/Users/adminuirs/AppData/Roaming/.emacs.d/elpaca/builds/vterm/vterm-module.c:929:(.text+0x30ef): undefined reference to `vterm_keyboard_key'
F:/App/Scoop/apps/mingw-winlibs-llvm-ucrt/14.2.0-18.1.8-12.0.0-r1/bin/../lib/gcc/x86_64-w64-mingw32/14.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: CMakeFiles/vterm-module.dir/objects.a(vterm-module.c.obj):C:/Users/adminuirs/AppData/Roaming/.emacs.d/elpaca/builds/vterm/vterm-module.c:945: more undefined references to `vterm_keyboard_key' follow
F:/App/Scoop/apps/mingw-winlibs-llvm-ucrt/14.2.0-18.1.8-12.0.0-r1/bin/../lib/gcc/x86_64-w64-mingw32/14.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: CMakeFiles/vterm-module.dir/objects.a(vterm-module.c.obj): in function `term_process_key':
C:/Users/adminuirs/AppData/Roaming/.emacs.d/elpaca/builds/vterm/vterm-module.c:1011:(.text+0x3143): undefined reference to `vterm_keyboard_unichar'
F:/App/Scoop/apps/mingw-winlibs-llvm-ucrt/14.2.0-18.1.8-12.0.0-r1/bin/../lib/gcc/x86_64-w64-mingw32/14.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:/Users/adminuirs/AppData/Roaming/.emacs.d/elpaca/builds/vterm/vterm-module.c:1013:(.text+0x3158): undefined reference to `vterm_keyboard_unichar'
F:/App/Scoop/apps/mingw-winlibs-llvm-ucrt/14.2.0-18.1.8-12.0.0-r1/bin/../lib/gcc/x86_64-w64-mingw32/14.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:/Users/adminuirs/AppData/Roaming/.emacs.d/elpaca/builds/vterm/vterm-module.c:1009:(.text+0x316d): undefined reference to `vterm_keyboard_key'
F:/App/Scoop/apps/mingw-winlibs-llvm-ucrt/14.2.0-18.1.8-12.0.0-r1/bin/../lib/gcc/x86_64-w64-mingw32/14.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:/Users/adminuirs/AppData/Roaming/.emacs.d/elpaca/builds/vterm/vterm-module.c:1007:(.text+0x3182): undefined reference to `vterm_keyboard_key'
F:/App/Scoop/apps/mingw-winlibs-llvm-ucrt/14.2.0-18.1.8-12.0.0-r1/bin/../lib/gcc/x86_64-w64-mingw32/14.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:/Users/adminuirs/AppData/Roaming/.emacs.d/elpaca/builds/vterm/vterm-module.c:1005:(.text+0x3197): undefined reference to `vterm_keyboard_key'
F:/App/Scoop/apps/mingw-winlibs-llvm-ucrt/14.2.0-18.1.8-12.0.0-r1/bin/../lib/gcc/x86_64-w64-mingw32/14.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:/Users/adminuirs/AppData/Roaming/.emacs.d/elpaca/builds/vterm/vterm-module.c:1003:(.text+0x31ac): undefined reference to `vterm_keyboard_key'
F:/App/Scoop/apps/mingw-winlibs-llvm-ucrt/14.2.0-18.1.8-12.0.0-r1/bin/../lib/gcc/x86_64-w64-mingw32/14.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:/Users/adminuirs/AppData/Roaming/.emacs.d/elpaca/builds/vterm/vterm-module.c:1001:(.text+0x31c1): undefined reference to `vterm_keyboard_key'
F:/App/Scoop/apps/mingw-winlibs-llvm-ucrt/14.2.0-18.1.8-12.0.0-r1/bin/../lib/gcc/x86_64-w64-mingw32/14.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: CMakeFiles/vterm-module.dir/objects.a(vterm-module.c.obj):C:/Users/adminuirs/AppData/Roaming/.emacs.d/elpaca/builds/vterm/vterm-module.c:999: more undefined references to `vterm_keyboard_key' follow
F:/App/Scoop/apps/mingw-winlibs-llvm-ucrt/14.2.0-18.1.8-12.0.0-r1/bin/../lib/gcc/x86_64-w64-mingw32/14.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: CMakeFiles/vterm-module.dir/objects.a(vterm-module.c.obj): in function `fetch_cell':
C:/Users/adminuirs/AppData/Roaming/.emacs.d/elpaca/builds/vterm/vterm-module.c:209:(.text+0x1056): undefined reference to `vterm_screen_get_cell'
collect2.exe: error: ld returned 1 exit status
make[2]: *** [CMakeFiles/vterm-module.dir/build.make:136: C:/Users/adminuirs/AppData/Roaming/.emacs.d/elpaca/builds/vterm/vterm-module.dll] Error 1
make[1]: *** [CMakeFiles/Makefile2:86: CMakeFiles/vterm-module.dir/all] Error 2
make: *** [makefile:91: all] Error 2
/c/Users/adminuirs/AppData/Roaming/.emacs.d/elpaca/builds/vterm

看来像是 Windows 系统的 link 程序错误?

不对, 题主先不用管我的问题了, 可能是我当前电脑文件系统的问题.

等过几天换个电脑再来试试

Hello~~

我现在换了台电脑测试了, 现在编译:

-- System libvterm not found: libvterm will be downloaded and compiled as part of the build process
-- Use system conpty: C:/Users/Jack/Desktop/libtool-1.5.26-bin/bin/conpty_proxy.exe
-- Configuring done (0.8s)
-- Generating done (0.1s)
-- Build files have been written to: C:/Users/Jack/AppData/Roaming/.emacs.d/elpaca/builds/vterm/build
[  8%] e[34me[1mPerforming update step for 'libvterm'e[0m
-- Already at requested ref: 64f1775952dbe001e989f2ab679563b54f2fca55
[ 16%] e[34me[1mNo patch step for 'libvterm'e[0m
[ 25%] e[34me[1mNo configure step for 'libvterm'e[0m
[ 33%] e[34me[1mPerforming build step for 'libvterm'e[0m
CC src/encoding.c
CC src/keyboard.c
CC src/mouse.c
CC src/parser.c
CC src/pen.c
src/pen.c: In function 'vterm_state_newpen':
src/pen.c:168:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes]
  168 | }
      | ^
src/pen.c: In function 'vterm_state_resetpen':
src/pen.c:185:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes]
  185 | }
      | ^
src/pen.c: In function 'vterm_state_savepen':
src/pen.c:209:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes]
  209 | }
      | ^
src/pen.c: In function 'vterm_state_setpen':
src/pen.c:467:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes]
  467 | }
      | ^
src/pen.c: In function 'vterm_state_getpen':
src/pen.c:547:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes]
  547 | }
      | ^
CC src/screen.c
src/screen.c: In function 'vterm_screen_free':
src/screen.c:888:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes]
  888 | }
      | ^
CC src/state.c
src/state.c: In function 'vterm_state_free':
src/state.c:110:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes]
  110 | }
      | ^
CC src/unicode.c
src/unicode.c:306:12: warning: 'mk_wcswidth_cjk' defined but not used [-Wunused-function]
  306 | static int mk_wcswidth_cjk(const uint32_t *pwcs, size_t n)
      |            ^~~~~~~~~~~~~~~
src/unicode.c:215:12: warning: 'mk_wcswidth' defined but not used [-Wunused-function]
  215 | static int mk_wcswidth(const uint32_t *pwcs, size_t n)
      |            ^~~~~~~~~~~
src/unicode.c: In function 'vterm_unicode_width':
src/unicode.c:332:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes]
  332 | }
      | ^
src/unicode.c: In function 'vterm_unicode_is_combining':
src/unicode.c:337:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes]
  337 | }
      | ^
CC src/vterm.c
src/vterm.c: In function 'vterm_allocator_malloc':
src/vterm.c:99:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes]
   99 | }
      | ^
src/vterm.c: In function 'vterm_allocator_free':
src/vterm.c:104:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes]
  104 | }
      | ^
src/vterm.c: In function 'vterm_push_output_bytes':
src/vterm.c:154:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes]
  154 | }
      | ^
src/vterm.c: In function 'vterm_push_output_vsprintf':
src/vterm.c:162:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes]
  162 | }
      | ^
src/vterm.c: In function 'vterm_push_output_sprintf':
src/vterm.c:170:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes]
  170 | }
      | ^
src/vterm.c: In function 'vterm_push_output_sprintf_ctrl':
src/vterm.c:196:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes]
  196 | }
      | ^
src/vterm.c: In function 'vterm_push_output_sprintf_str':
src/vterm.c:232:1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes]
  232 | }
      | ^
LINK libvterm.la
C:\Users\Jack\Desktop\libtool-1.5.26-bin\bin\libtool: line 1506: pwd.sh: command not found
C:\Users\Jack\Desktop\libtool-1.5.26-bin\bin\libtool: line 3770: /: Is a directory
C:\Users\Jack\Desktop\libtool-1.5.26-bin\bin\libtool: line 6046: pwd.sh: command not found
CC bin/unterm.c
C:\Users\Jack\Desktop\libtool-1.5.26-bin\bin\libtool: line 1506: pwd.sh: command not found
F:/App/Scoop/apps/mingw-winlibs-llvm-ucrt/14.2.0-18.1.8-12.0.0-r1/bin/../lib/gcc/x86_64-w64-mingw32/14.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: cannot find -lvterm: No such file or directory
collect2.exe: error: ld returned 1 exit status
make[3]: *** [makefile:76: bin/unterm] Error 1
make[2]: *** [CMakeFiles/libvterm.dir/build.make:86: libvterm-prefix/src/libvterm-stamp/libvterm-build] Error 2
make[1]: *** [CMakeFiles/Makefile2:112: CMakeFiles/libvterm.dir/all] Error 2
make: *** [makefile:91: all] Error 2
/c/Users/Jack/AppData/Roaming/.emacs.d/elpaca/builds/vterm

请问这是我的 libtool 有问题还是其它问题?

哎呀, 看起来只能使用 msys2 了吗???

楼主伟大

有两个小问题:

  1. 光标形状默认是块状,有办法改成线状吗?
  2. conpty_proxy.exe 的目录默认是 vterm 模块下,我放进 path 没搜索成功。能通过配置调整 exe 位置吗?

没看懂怎么安装,直接下两个exe?还是需要自行编译

推荐采用 msys2 环境

  1. 安装 fork vterm
  2. 从 msys2 安装合适的 libvterm
  3. mkdir build && cd build && cmake ..
  4. 复制 conpty_proxy.exe 到 vterm.el 相同目录
  5. 复制 vterm-module.dll 到 load-path 之一
  6. 设置 vterm-shell 为你最喜欢的 shell
  7. M-x vterm

感谢,已找到使用方法了:

  1. 下载conpty_proxy.exe ,放到想放的位置(我这里放到 ~/.emacs.d/bin/ )
  2. 下载vterm.el ,放到习惯的位置(我这里放到 ~/.emacs.d/elpa/ )
  3. 下载对应的dll (有ucrt和普通的版本可选),放到想放的位置(我这里放到 ~/.emacs.d/bin/ )
  4. 配置emacs的启动文件。注意如果启动时设置了 load-suffixes 等变量,需要在恢复后再配置 vterm
(add-to-list 'load-path "~/.emacs.d/bin")
(use-package vterm
  :load-path "~/.emacs.d/elpa/"
  :config
  (when (eq system-type 'windows-nt)
    (setq vterm-shell "powershell")))
  1. M-x vterm

4 个赞