-
-
Notifications
You must be signed in to change notification settings - Fork 863
Open
Labels
Description
Xmake 版本
2.9.2
操作系统版本和架构
Windows 10 22H2
描述问题
在windows环境下,以wasm为目标,从xrepo安装任意一个调用package.tools.cmake
模块的包(例如cubeb
),都会报以下错误:
找不到mingw32-make
checking for the c++ compiler (cxx) ... emcc.bat
checkinfo: cannot runv(ninja.exe --version), No such file or directory
checking for ninja ... no
checkinfo: cannot runv(ninja.exe --version), No such file or directory
checking for ninja ... no
checkinfo: cannot runv(ninja.exe --version), No such file or directory
checking for ninja ... no
error: @programdir\modules\package\tools\cmake.lua:514: mingw32-make not found!
这是由于emsdk工具链下,cmake 的下游构建程序只能是ninja
和mingw32-make
,而这些包没有添加ninja
依赖,所以报错。
找不到make
命令
如果为调用package.tools.cmake
的包加上ninja
依赖,上述报错不会出现。但是如果这个包需要用make构建,则会出现下面的报错信息:
-- Configuring done (19.2s)
-- Generating done (0.0s)
-- Build files have been written to: C:/Users/jingkaimori/AppData/Local/.xmake/cache/packages/2405/m/mimalloc/2.1.7/source/build
make -j18 VERBOSE=1
error: @programdir\core\sandbox\modules\os.lua:378: cannot execv(make -j18 VERBOSE=1), No such file or directory
stack traceback:
[C]: in function 'error'
[@programdir\core\base\os.lua:973]:
[@programdir\core\sandbox\modules\os.lua:378]:
[@programdir\core\sandbox\modules\os.lua:291]: in function 'vrunv'
[@programdir\modules\package\tools\cmake.lua:964]: in function '_build_for_make'
[@programdir\modules\package\tools\cmake.lua:1142]: in function 'build'
[...ocuments\Source\xmake-repo\packages\m\mimalloc\xmake.lua:61]: in function 'script'
[...dir\modules\private\action\require\impl\utils\filter.lua:114]: in function 'call'
[...\modules\private\action\require\impl\actions\install.lua:404]:
这是因为_build_for_make
函数没处理emsdk工具链下的make
找不到mingw
加上ninja
依赖后,package.tools.cmake
的包还会报错,说找不到mingw环境,这个报错和_install_for_make
函数有关:
-- Configuring done (23.3s)
-- Generating done (0.0s)
-- Build files have been written to: C:/Users/jingkaimori/AppData/Local/.xmake/cache/packages/2405/c/cubeb/2023.7.31/source/cubeb/build_44ab3bab
error: @programdir\modules\package\tools\cmake.lua:1031: mingw not found!
stack traceback:
[C]: in function 'error'
[@programdir\core\base\os.lua:973]: in function 'raiselevel'
[@programdir\core\sandbox\modules\utils.lua:143]: in function 'assert'
[@programdir\modules\package\tools\cmake.lua:1031]: in function '_install_for_make'
[@programdir\modules\package\tools\cmake.lua:1193]: in function 'install'
[...i\Documents\Source\xmake-repo\packages\c\cubeb\xmake.lua:36]: in function 'script'
[...dir\modules\private\action\require\impl\utils\filter.lua:114]: in function 'call'
[...\modules\private\action\require\impl\actions\install.lua:404]:
期待的结果
- 如果检测到当前工具链为
emsdk
,操作平台为windows
,则为cmake包添加ninja
依赖; - 修改
package.tools.cmake
模块的_install_for_make
和_build_for_make
等函数,处理emsdk工具链的情况
工程配置
见xmake-repo的cubeb
、emio
包,以及 xmake-io/xmake-repo#3215
附加信息和错误日志
参见问题描述