C ++第一次编译

时间:2009-07-18 10:26:01

标签: c++ compilation

我会表明我的误解。

  • 它说bat文件中必须有del * .obj
  • 它说必须有一个obj文件
  • 它说obj文件实际上必须是cpp文件

请告诉我你的解释。

http://computerprogramming.suite101.com/article.cfm/the_borland_win32_compiler_guide

谢谢!

1 个答案:

答案 0 :(得分:2)

你的问题有点令人困惑,但我会尝试一下。

通常,您有一组C ++源文件,例如x.cppy.cpp

编译阶段将采用这些并创建,例如x.objy.obj

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

1 /批处理文件中有"del *.obj"的原因是删除所有目标文件,以便make可以重新创建它们。 Make(如果你在makefile中使用智能规则)只会重建所需的东西(例如,cpp文件如果当前{{1}将不会被编译为obj文件文件的日期晚于它)。删除目标文件将强制创建一个新文件。

2 / 没有作为目标文件,这些文件通常是从objc源文件创建的。此外,您可以组合编译和链接阶段,以便不会创建任何目标文件(或者一旦完成就会很快销毁)。

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

根据评论进行更新:

如果您只想指定一次应用程序名称,那么您的评论就是这样的(我认为,格式并不像您指出的那么好):

cpp

我认为你需要的是:

  PATH=C:\BORLAND\BCC55\BIN;%PATH%
  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.txt delete err.txt :END

您对 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 替换的内容可以在makefile中使用,但不能在cmd文件中使用。你需要使用%APP%变体来获得你想要的东西。