C++ 第一次编译

标签 c++ compilation

我会让你证明我的误解。

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

请告诉我你的解释。

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

谢谢!

最佳答案

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

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

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

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

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

2/目标文件不是必须,它们通常是从ccpp 源文件创建的。此外,您可以合并编译和链接阶段,这样就不会创建目标文件(或者在完成后很快销毁)。

3/目标文件不一定是 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

您对 "$(APP)" 替换的内容可以在 makefile 中使用,但不能在 cmd 文件中使用。在那里你需要使用 %APP% 变体来获得你想要的。

关于C++ 第一次编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1147199/

相关文章:

c++ - g++ 默认参数

c++ - sleep/nanosleep 是否通过使用繁忙的等待方案来工作?

用于累积逗号分隔字符串的 C++ 预处理器宏

c - 为什么默认编译器标志未显示在 gcc 行中?

c - gcc -o 如何命名目标文件

java - 如果在编译期间编辑文件会发生什么?

typescript - Visual Studio Code : compile typescript module

c++ - 如何在 CLion 中将外部 C++ 库与 Bazel 一起使用?

c++ - ostream << 在类中重载 crush

C++ ofstream,不带 CRLF 的打印