C++ C++;第一次编译

C++ C++;第一次编译,c++,compilation,C++,Compilation,我会告诉你我的误解 它说bat文件中必须有del*.obj 它说一定有一个obj文件 它说obj文件实际上必须是一个cpp文件 请让我看看你的解释 谢谢 你的问题有点让人困惑,但我会试试看 典型地,您有一组C++源文件,例如,代码> x.CPP 和 y.CPP 编译阶段将采用这些方法并创建,例如,x.obj和y.obj 链接阶段将使用这些文件并创建单个可执行文件,例如,xy.exe 1/批处理文件中有“del*.obj”的原因是删除所有对象文件,以便make可以重新创建它们。Make(如果

我会告诉你我的误解

  • 它说bat文件中必须有del*.obj
  • 它说一定有一个obj文件
  • 它说obj文件实际上必须是一个cpp文件
请让我看看你的解释


谢谢

你的问题有点让人困惑,但我会试试看

典型地,您有一组C++源文件,例如,代码> x.CPP 和 y.CPP 编译阶段将采用这些方法并创建,例如,

x.obj
y.obj

链接阶段将使用这些文件并创建单个可执行文件,例如,
xy.exe

1/批处理文件中有
“del*.obj”
的原因是删除所有对象文件,以便make可以重新创建它们。Make(如果您在makefile中使用智能规则)将仅重建所需的内容(例如,如果当前的
obj
文件的日期晚于该文件,则
cpp
文件将不会编译为
obj
文件)。删除对象文件将强制创建新文件

2/不必有对象文件,这些文件通常是从
c
cpp
源文件创建的。此外,您可以将编译和链接阶段结合起来,这样就不会创建任何对象文件(或者在完成后很快销毁)

3/对象文件不必是
cpp
文件,但它通常是从具有相同基本名称的
cpp
文件构建的

根据评论更新:

如果您只想指定一次应用程序名称,您的注释是这样的(我认为,格式没有您指出的那么好):

我想你需要的是:

  PATH=C:\BORLAND\BCC55\BIN;%PATH%
  set APP=MyApp
  del *.exe
  del *.obj
  del *.res
  make -f%APP%.mak >err.txt
  if exist %APP%.exe goto :RUN_EXE
:EDIT_ERR
  call notepad.exe err.txt
  goto :END
:RUN_EXE
  call %APP%.exe
  if exist err.txt delete err.txt
:END

您的
“$(APP)”
替换可以在makefile中工作,但不能在cmd文件中工作。在这里,您需要使用%APP%变量来获取所需内容。

我尝试了PATH=C:\BORLAND\BCC55\BIN;%路径%APP=MyApp del*.exe del*.obj del*.res make-f$(APP).mak err.txt if exist$(APP.exe goto RUN_exe:EDIT_err call notepad.exe err.txt:RUN_exe call$(APP.exe if exist err.delete txt err.txt:END但是否有办法写入MyApp一次(该命令未被识别)?@DT,缩进在评论中不起作用,请尝试编辑您的问题(添加到结尾)。@PAX,我正在阅读一本每章都有不同cpp代码的书。我是否需要为每章创建bat和mak文件?我会有很多机会出错……值得一提的是,你可以下载另一个带有IDE的编译器,比如MSVC++Express,你就不必这么做了。对于初学者来说,似乎没有什么特别的原因就要涉过很多工作。@Delerium,是的,你可能会。但是你的尝试是很好的——这意味着你可以复制前面章节的文件并更改单个“set APP=MyApp”行。认真思考Jalf所说的——Borland IDE很出色,但是他们的命令行编译器并不适合学习者。您可能需要考虑从微软下载MSVC Express。
  PATH=C:\BORLAND\BCC55\BIN;%PATH%
  set APP=MyApp
  del *.exe
  del *.obj
  del *.res
  make -f%APP%.mak >err.txt
  if exist %APP%.exe goto :RUN_EXE
:EDIT_ERR
  call notepad.exe err.txt
  goto :END
:RUN_EXE
  call %APP%.exe
  if exist err.txt delete err.txt
:END