c++ - 有什么方法可以检测 Windows 批处理文件中的错误?(c++代码编译)
问题描述
我已经编写了 run.bat 文件来编译以及通过 Windows 终端运行我的 c++ 代码。该文件仅包含两个命令:
g++ %1.cpp -o %1.exe
%1.exe
但是如果代码有一些编译时错误,我不知道如何停止执行第二个命令。有没有可用的解决方案?请告诉我...
解决方案
您可能想研究其他构建方式。
如果您有 GCC,那么您很可能也有该make
命令,并且可以编写生成文件来处理依赖项和规则。
与您的问题最相关的部分是,如果生成文件中的一条规则失败,那么链上更远的规则将不会被执行。
对于问题中的系统,我们可以有一个简单Makefile
的这样的:
run: $(PROGRAM).exe
./$(PROGRAM).exe
$(PROGRAM).exe: $(PROGRAM).cpp
g++ -Wall $(PROGRAM).cpp -o $(PROGRAM).exe
然后在终端中运行命令
make run PROGRAM=my_program
该make
命令将读取Makefile
. 如果源文件my_program.cpp
比my_program.exe
(或者如果my_program.exe
不存在)更新,那么my_program.cpp
将被内置到my_program.exe
. 然后my_program.exe
会被执行。
请注意,我真的不建议使用这样的“运行”目标。相反,我建议您将构建和运行分开。你可以用命令做到这一点
make PROGRAM=my_program && ./my_program.exe
这与两个单独的命令相同
make PROGRAM=my_program
./my_program.exe
推荐阅读
- javascript - zk getStyle 函数获取不到用户拖动组件后的最新位置
- javascript - 如何将此 CodePen 代码集成到 Vue 中?
- php - 如何更新表中的多行?
- swift - 访问由不同类的代码创建的 UI 元素
- javascript - Kendo UI && JavaScript - 显示“YES”和“NO”
- c# - 如何使用 for 循环格式化 DataGrid 列
- javafx - JavaFX:使用 TextFormatter 从 TextField 中删除空格
- dask - 在 Singularity 容器中运行 Dask
- javascript - 表单的提交按钮不起作用。你能告诉我我做错了什么吗?
- java - 当控制器依赖于请求上下文时,使用 @WebMvcTest 对控制器进行单元测试不起作用