#2176·hermes

`shermes` 无条件地输出 GNU 风格的编译和链接标志,因此其默认的 `SHERMES_CC` (= `CMAKE_C_COMPILER` = clang-cl) 在 Windows 上无法链接所编译的程序

作者: altween创建于 2026年9月7日更新于 2026年9月11日

shermes 将 JavaScript 编译为 C 语言,然后调用 C 编译器来构建和链接结果。该编译器默认为 CMake 的 C 编译器 - tools/shermes/CMakeLists.txt:18:

cmake
set(SHERMES_CC "${CMAKE_C_COMPILER}" CACHE STRING "C compiler to invoke")

在 clang-cl 配置下,SHERMES_CCclang-cl。但是,shermes 命令行用于构建的命令行是 GNU 驱动程序的形式,无条件地构建和链接结果 - tools/shermes/compile.cppbuildCCArgs-fPIC:225-fno-strict-overflow:270-L<dir>:282:289-l<name>:284-lshermes_console:310-Wl,-rpath:313:317-lm:325,以及 -lhermesvm:334

内容来源: facebook/hermes