xmake-io / xmake

🔥 A cross-platform build utility based on Lua
https://xmake.io
Apache License 2.0
9.87k stars 776 forks source link

msvc 编译模块报错:attempt to concatenate a nil value (local 'bmifile') #5470

Closed Arteiimis closed 1 month ago

Arteiimis commented 1 month ago

Xmake 版本

2.9.4

操作系统版本和架构

win10

描述问题

msvc 编译模块报错:attempt to concatenate a nil value (local 'bmifile') 与 #5090 类似, 但是我已经指定了c++20版本, 甚至指定了开启模块编译, 依旧报错.

期待的结果

正常编译

工程配置

add_rules("mode.debug", "mode.release")
add_rules("plugin.compile_commands.autoupdate", { outputdir = "./build" })

set_runtimes("MD")
set_languages("c++20")

target("helc")
    set_kind("binary")
    set_policy("build.c++.modules", true)
    set_toolchains("msvc")

    add_languages("c++23")
    add_files("/main.cpp")
    add_files("src/**.ixx")
    add_headerfiles("src/*.hxx")
target_end()

附加信息和错误日志

"D:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.40.33807\\bin\\HostX64\\x64\\cl.exe" -c -nologo -O2 -std:c++20 -std:c++latest -MD /EHsc -DNDEBUG -reference defint=build\.gens\helc\windows\x64\release\rules\bmi\cache\modules\1b947e68\defint.ifc -headerUnit:angle list=build\.gens\helc\windows\x64\release\rules\bmi\cache\headerunits\stl\list.ifc -headerUnit:angle string=build\.gens\helc\windows\x64\release\rules\bmi\cache\headerunits\stl\string.ifc -headerUnit:angle string_view=build\.gens\helc\windows\x64\release\rules\bmi\cache\headerunits\stl\string_view.ifc -headerUnit:angle tuple=build\.gens\helc\windows\x64\release\rules\bmi\cache\headerunits\stl\tuple.ifc -headerUnit:angle functional=build\.gens\helc\windows\x64\release\rules\bmi\cache\headerunits\stl\functional.ifc -reference hc.types=build\.gens\helc\windows\x64\release\rules\bmi\cache\modules\bcd65690\hc.types.ifc -headerUnit:angle type_traits=build\.gens\helc\windows\x64\release\rules\bmi\cache\headerunits\stl\type_traits.ifc -headerUnit:angle memory=build\.gens\helc\windows\x64\release\rules\bmi\cache\headerunits\stl\memory.ifc -headerUnit:angle set=build\.gens\helc\windows\x64\release\rules\bmi\cache\headerunits\stl\set.ifc -headerUnit:angle unordered_set=build\.gens\helc\windows\x64\release\rules\bmi\cache\headerunits\stl\unordered_set.ifc -TP -ifcOutput build\.gens\helc\windows\x64\release\rules\bmi\cache\modules\f95134c8\parser.ast.ifc -interface -Fobuild\.objs\helc\windows\x64\release\src\parser\Ast.ixx.obj src\parser\Ast.ixx
error: @programdir\core\main.lua:329: @programdir\core\sandbox\modules\import\core\base\task.lua:65: ...amdir\rules\c++\modules\modules_support\msvc\builder.lua:187: attempt to concatenate a nil value (local 'bmifile')
stack traceback:
    [...amdir\rules\c++\modules\modules_support\msvc\builder.lua:187]: in function '_get_requiresflags'
    [...amdir\rules\c++\modules\modules_support\msvc\builder.lua:199]: in function '_get_requiresflags'
    [...amdir\rules\c++\modules\modules_support\msvc\builder.lua:199]: in function '_get_requiresflags'
    [...amdir\rules\c++\modules\modules_support\msvc\builder.lua:222]: in function '_append_requires_flags'
    [...amdir\rules\c++\modules\modules_support\msvc\builder.lua:343]: in function 'make_module_buildcmds'
    [...ir\rules\c++\modules\modules_support\msvc\..\builder.lua:302]: in function 'build_module'
    [...ir\rules\c++\modules\modules_support\msvc\..\builder.lua:50]: in function '_build_modules'
    [...ir\rules\c++\modules\modules_support\msvc\..\builder.lua:300]: in function 'build_modules_for_batchcmds'
    [@programdir\rules\c++\modules\xmake.lua:178]: in function 'script'
    [@programdir\plugins\project\utils\target_cmds.lua:79]: in function 'get_target_buildcmd_files'
    [@programdir\plugins\project\utils\target_cmds.lua:110]: in function 'get_target_buildcmd_sourcegroups'
    [@programdir\plugins\project\clang\compile_commands.lua:249]: in function '_add_target_commands'
    [@programdir\plugins\project\clang\compile_commands.lua:281]: in function '_add_target'
    [@programdir\plugins\project\clang\compile_commands.lua:293]: in function '_add_targets'
    [@programdir\plugins\project\clang\compile_commands.lua:309]: in function '?'
    [@programdir\plugins\project\main.lua:75]: in function '_make'
    [@programdir\plugins\project\main.lua:95]:
    [C]: in function 'xpcall'
    [@programdir\core\base\utils.lua:275]:
    [@programdir\core\base\task.lua:491]: in function 'run'
    [@programdir\core\sandbox\modules\import\core\base\task.lua:63]: in function 'run'
    [@programdir\rules\plugin\compile_commands\xmake.lua:66]: in function 'callback'
    [@programdir\modules\core\project\depend.lua:217]: in function 'on_changed'
    [@programdir\rules\plugin\compile_commands\xmake.lua:62]: in function 'buildscript'
    [@programdir\actions\build\main.lua:97]: in function '_do_project_rules'
    [@programdir\actions\build\main.lua:144]: in function 'catch'
    [@programdir\core\sandbox\modules\try.lua:123]: in function 'try'
    [@programdir\actions\build\main.lua:118]: in function 'build_targets'
    [@programdir\actions\build\main.lua:201]:
    [C]: in function 'xpcall'
    [@programdir\core\base\utils.lua:275]:
    [@programdir\core\base\task.lua:491]: in function 'run'
    [@programdir\core\main.lua:327]: in function 'cotask'
    [@programdir\core\base\scheduler.lua:406]:

stack traceback:
        [C]: in function 'error'
        @programdir\core\base\os.lua:973: in function 'os.raiselevel'
        (...tail calls...)
        @programdir\core\main.lua:329: in upvalue 'cotask'
        @programdir\core\base\scheduler.lua:406: in function <@programdir\core\base\scheduler.lua:399>
warning: std and std.compat modules not found ! disabling them for the build
Issues-translate-bot commented 1 month ago

Bot detected the issue body's language is not English, translate it automatically.


Title: msvc compilation module error: attempt to concatenate a nil value (local 'bmifile')

Xmake version

2.9.4

Operating system version and architecture

win10

Describe the problem

msvc compilation module error: attempt to concatenate a nil value (local 'bmifile')

Expected results

Compile normally

Project configuration

add_rules("mode.debug", "mode.release")
add_rules("plugin.compile_commands.autoupdate", { outputdir = "./build" })

set_runtimes("MD")
set_languages("c++20")

target("helc")
    set_kind("binary")
    set_policy("build.c++.modules", true)
    set_toolchains("msvc")

    add_languages("c++23")
    add_files("/main.cpp")
    add_files("src/**.ixx")
    add_headerfiles("src/*.hxx")
target_end()

Additional information and error logs

"D:\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.40.33807\\bin\\HostX64\\x64\\cl.exe" -c -nologo -O2 - std:c++20 -std:c++latest -MD /EHsc -DNDEBUG -reference defint=build\.gens\helc\windows\x64\release\rules\bmi\cache\modules\1b947e68\defint.ifc - headerUnit:angle list=build\.gens\helc\windows\x64\release\rules\bmi\cache\headerunits\stl\list.ifc -headerUnit:angle string=build\.gens\helc\windows\x64\release\ rules\bmi\cache\headerunits\stl\string.ifc -headerUnit:angle string_view=build\.gens\helc\windows\x64\release\rules\bmi\cache\headerunits\stl\string_view.ifc -headerUnit:angle tuple =build\.gens\helc\windows\x64\release\rules\bmi\cache\headerunits\stl\tuple.ifc -headerUnit:angle functional=build\.gens\helc\windows\x64\release\rules\bmi\ cache\headerunits\stl\functional.ifc -reference hc.types=build\.gens\helc\windows\x64\release\rules\bmi\cache\modules\bcd65690\hc.types.ifc -headerUnit:angle type_traits=build \.gens\helc\windows\x64\release\rules\bmi\cache\headerunits\stl\type_traits.ifc -headerUnit:angle memory=build\.gens\helc\windows\x64\release\rules\bmi\cache\ headerunits\stl\memory.ifc -headerUnit:angle set=build\.gens\helc\windows\x64\release\rules\bmi\cache\headerunits\stl\set.ifc -headerUnit:angle unordered_set=build\.gens\ helc\windows\x64\release\rules\bmi\cache\headerunits\stl\unordered_set.ifc -TP -ifcOutput build\.gens\helc\windows\x64\release\rules\bmi\cache\modules\f95134c8\parser. ast.ifc -interface -Fobuild\.objs\helc\windows\x64\release\src\parser\Ast.ixx.obj src\parser\Ast.ixx
error: @programdir\core\main.lua:329: @programdir\core\sandbox\modules\import\core\base\task.lua:65: ...amdir\rules\c++\modules\modules_support\msvc\builder .lua:187: attempt to concatenate a nil value (local 'bmifile')
stack traceback:
    [...amdir\rules\c++\modules\modules_support\msvc\builder.lua:187]: in function '_get_requiresflags'
    [...amdir\rules\c++\modules\modules_support\msvc\builder.lua:199]: in function '_get_requiresflags'
    [...amdir\rules\c++\modules\modules_support\msvc\builder.lua:199]: in function '_get_requiresflags'
    [...amdir\rules\c++\modules\modules_support\msvc\builder.lua:222]: in function '_append_requires_flags'
    [...amdir\rules\c++\modules\modules_support\msvc\builder.lua:343]: in function 'make_module_buildcmds'
    [...ir\rules\c++\modules\modules_support\msvc\..\builder.lua:302]: in function 'build_module'
    [...ir\rules\c++\modules\modules_support\msvc\..\builder.lua:50]: in function '_build_modules'
    [...ir\rules\c++\modules\modules_support\msvc\..\builder.lua:300]: in function 'build_modules_for_batchcmds'
    [@programdir\rules\c++\modules\xmake.lua:178]: in function 'script'
    [@programdir\plugins\project\utils\target_cmds.lua:79]: in function 'get_target_buildcmd_files'
    [@programdir\plugins\project\utils\target_cmds.lua:110]: in function 'get_target_buildcmd_sourcegroups'
    [@programdir\plugins\project\clang\compile_commands.lua:249]: in function '_add_target_commands'
    [@programdir\plugins\project\clang\compile_commands.lua:281]: in function '_add_target'
    [@programdir\plugins\project\clang\compile_commands.lua:293]: in function '_add_targets'
    [@programdir\plugins\project\clang\compile_commands.lua:309]: in function '?'
    [@programdir\plugins\project\main.lua:75]: in function '_make'
    [@programdir\plugins\project\main.lua:95]:
    [C]: in function 'xpcall'
    [@programdir\core\base\utils.lua:275]:
    [@programdir\core\base\task.lua:491]: in function 'run'
    [@programdir\core\sandbox\modules\import\core\base\task.lua:63]: in function 'run'
    [@programdir\rules\plugin\compile_commands\xmake.lua:66]: in function 'callback'
    [@programdir\modules\core\project\depend.lua:217]: in function 'on_changed'
    [@programdir\rules\plugin\compile_commands\xmake.lua:62]: in function 'buildscript'
    [@programdir\actions\build\main.lua:97]: in function '_do_project_rules'
    [@programdir\actions\build\main.lua:144]: in function 'catch'
    [@programdir\core\sandbox\modules\try.lua:123]: in function 'try'
    [@programdir\actions\build\main.lua:118]: in function 'build_targets'
    [@programdir\actions\build\main.lua:201]:
    [C]: in function 'xpcall'
    [@programdir\core\base\utils.lua:275]:
    [@programdir\core\base\task.lua:491]: in function 'run'
    [@programdir\core\main.lua:327]: in function 'cotask'
    [@programdir\core\base\scheduler.lua:406]:

stack traceback:
        [C]: in function 'error'
        @programdir\core\base\os.lua:973: in function 'os.raiselevel'
        (...tail calls...)
        @programdir\core\main.lua:329: in upvalue 'cotask'
        @programdir\core\base\scheduler.lua:406: in function <@programdir\core\base\scheduler.lua:399>
warning: std and std.compat modules not found! disabling them for the build
waruqi commented 1 month ago

给个完整可复现的工程,可以发到附件

Issues-translate-bot commented 1 month ago

Bot detected the issue body's language is not English, translate it automatically.


Provide a complete and reproducible project, which can be sent as an attachment.