xmake-io / xmake-vscode

🍩 A XMake integration in Visual Studio Code
https://xmake.io
Apache License 2.0
228 stars 55 forks source link

点击“运行”后,在编译过程中显示error,并输出“……退出代码:1”,但还是会继续运行“xmake run <project name>” #170

Closed QidiLiu closed 1 year ago

QidiLiu commented 1 year ago

Xmake 版本

2.7.6

操作系统版本和架构

Windows 10 专业版 version 22H2

描述问题

在VSCode中用XMake插件run我的C++项目,由于我的程序本身有BUG,编译显示编译出了问题,但是在退出编译后XMake插件仍要继续run,于是我用Ctrl+C强制退出。以下是VSCode里终端的所有输出(所有内容中项目名均由代替):

 *  正在文件夹 <project name> 中执行任务: xmake f -p windows -a x64 -m release -o d:\Project\<project name>/build 

 *  终端将被任务重用,按任意键关闭。 

 *  正在文件夹 <project name> 中执行任务: xmake -v 

[ 16%]: cache compiling.release cpp_project\Reconstructor\Reconstructor.cpp
"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.34.31933\\bin\\HostX64\\x64\\cl.exe" -c -nologo -O2 -fp:fast /EHsc -external:W0 -external:IC:\Users\liuqidi\AppData\Local\.xmake\packages\o\opencv\4.6.0\572286a4040048309c8b88505b025d08\include -external:W0 -external:IC:\Users\liuqidi\AppData\Local\.xmake\packages\i\itk\5.2.1\ed47747291ff41d8be5e4927af42f24d\include\ITK-5.2 -external:W0 -external:IC:\Users\liuqidi\AppData\Local\.xmake\packages\e\eigen\3.4.0\1af8f25c61b04e19afd2699bba8d04c0\include -external:W0 -external:IC:\Users\liuqidi\AppData\Local\.xmake\packages\e\eigen\3.4.0\1af8f25c61b04e19afd2699bba8d04c0\include\eigen3 -DNDEBUG -Fod:\Project\<project name>\build\.objs\<project name>\windows\x64\release\cpp_project\Reconstructor\Reconstructor.cpp.obj cpp_project\Reconstructor\Reconstructor.cpp
[ 33%]: cache compiling.release cpp_project\test.cpp
"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.34.31933\\bin\\HostX64\\x64\\cl.exe" -c -nologo -O2 -fp:fast /EHsc -external:W0 -external:IC:\Users\liuqidi\AppData\Local\.xmake\packages\o\opencv\4.6.0\572286a4040048309c8b88505b025d08\include -external:W0 -external:IC:\Users\liuqidi\AppData\Local\.xmake\packages\i\itk\5.2.1\ed47747291ff41d8be5e4927af42f24d\include\ITK-5.2 -external:W0 -external:IC:\Users\liuqidi\AppData\Local\.xmake\packages\e\eigen\3.4.0\1af8f25c61b04e19afd2699bba8d04c0\include -external:W0 -external:IC:\Users\liuqidi\AppData\Local\.xmake\packages\e\eigen\3.4.0\1af8f25c61b04e19afd2699bba8d04c0\include\eigen3 -DNDEBUG -Fod:\Project\<project name>\build\.objs\<project name>\windows\x64\release\cpp_project\test.cpp.obj cpp_project\test.cpp
error: Reconstructor.cpp
cpp_project\Reconstructor\Reconstructor.cpp(565): error C2039: "mask_start": 不是 "struct_block_info" 的成员
D:\Project\<project name>\cpp_project\Reconstructor\Reconstructor.h(33): note: 参见“struct_block_info”的声明

 *  终端进程“C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -Command xmake -v”已终止,退出代码: 1。 
 *  终端将被任务重用,按任意键关闭。 

 *  正在文件夹 <project name> 中执行任务: xmake run <project name> 

 *  终端进程“C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -Command xmake run <project name>”已终止,退出代码: 1。 
 *  终端将被任务重用,按任意键关闭。 

期待的结果

编译失败后就不再进行“xmake run

工程配置

项目文件夹下的文件分布大体上是这样的(入口main函数在test.cpp里):

根目录下的xmake.lua是这样的:

add_rules("mode.debug", "mode.release")
includes("cpp_project/ClassA")
includes("cpp_project/ClassB")

target("<project name>")
    set_kind("binary")
    add_files("cpp_project/*.cpp")

/ClassAFolder下的xmake.lua是这样的:

target("<project name>")
    set_kind("binary")
    add_headerfiles("*.h")
    add_files("*.cpp")

/ClassBFolder下的xmake.lua是这样的:

add_requires("opencv")
add_requires("itk")

target("<project name>")
    set_kind("binary")
    add_headerfiles("*.h")
    add_files("*.cpp")
    add_packages("opencv")
    add_packages("itk")

附加信息和错误日志

No response

waruqi commented 1 year ago

这个不太好改,目前插件任务提交,都是异步丢过去运行的,中途取消很麻烦,先这么凑活着用吧,或者可以提个 pr 过来

QidiLiu commented 1 year ago

这个不太好改,目前插件任务提交,都是异步丢过去运行的,中途取消很麻烦,先这么凑活着用吧,或者可以提个 pr 过来

好的。确实问题不大。