Skip to content

依赖 C++ modules 的单元测试无法生成 compile_commands #6544

Open
@sunhs

Description

@sunhs

Xmake 版本

xmake v3.0.0+dev.ace14b3

操作系统版本和架构

Ubuntu 20.04

描述问题

可复现的例子已上传。

其中 xmake.lua 有这么一部分:

target("test")
do
    set_kind("binary")
    set_default(false)
    add_deps("lib")
    add_files("tests/test.cpp")
    add_tests("default")
end

依赖项 lib 是 C++ module。

此时运行 xmake project -k compile_commands build 会报错。

如果把 set_default(false) 去掉则能成功。

如果把 add_deps("lib") 去掉,则不论 set_default 是 true 或 false 都能成功

期待的结果

依赖 C++ modules 时,即使 set_default(false) 也能为测试样例生成 compile_commands

工程配置

reproduce.tgz

附加信息和错误日志

❗ error: @programdir/core/main.lua:329: @programdir/rules/c++/modules/scanner.lua:899: no modules!
stack traceback:
    [C]: in function 'error'
    [@programdir/core/base/os.lua:1075]: in function 'raiselevel'
    [@programdir/core/sandbox/modules/utils.lua:143]: in function 'assert'
    [@programdir/rules/c++/modules/scanner.lua:899]: in function 'get_modules'
    [@programdir/rules/c++/modules/gcc/../gcc/../builder.lua:665]:
    [@programdir/modules/private/action/build/target.lua:470]: in function 'run'
    [@programdir/plugins/project/utils/target_cmds.lua:72]: in function 'get_target_buildcmds'
    [@programdir/plugins/project/clang/compile_commands.lua:246]: in function '_add_target_commands'
    [@programdir/plugins/project/clang/compile_commands.lua:274]: in function '_add_target'
    [@programdir/plugins/project/clang/compile_commands.lua:287]: in function '_add_targets'
    [@programdir/plugins/project/clang/compile_commands.lua:312]: 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:246]:
    [@programdir/core/base/task.lua:504]: 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:1075: 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>

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions