Компиляция C ++ в первый раз - PullRequest
0 голосов
/ 18 июля 2009

Я покажу вам мою неверную интерпретацию.

  • он говорит, что в файле bat должен быть del * .obj
  • он говорит, что должен быть файл obj
  • он говорит, что файл obj на самом деле должен быть файлом cpp

Пожалуйста, покажите мне вашу интерпретацию.

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

Спасибо!

1 Ответ

2 голосов
/ 18 июля 2009

Ваш вопрос немного сбивает с толку, но я попробую его.

Как правило, у вас есть группа исходных файлов C ++, например, x.cpp и y.cpp.

Фаза компиляции примет их и создаст, например, x.obj и y.obj.

Фаза связи примет их и создаст один исполняемый файл, например, xy.exe.

1 / Причина, по которой у вас есть "del *.obj" в командном файле, заключается в удалении всех объектных файлов, чтобы make мог их воссоздать. Make (если вы используете интеллектуальные правила в make-файле) будет перестраивать только те вещи, которые необходимы (например, файл cpp не будет скомпилирован в файл obj, если текущий файл obj имеет более позднюю версию дата, чем это). Удаление объектного файла приведет к созданию нового файла.

2 / В нет в качестве объектного файла, они обычно создаются из исходных файлов c или cpp. Кроме того, вы можете комбинировать фазы компиляции и компоновки, чтобы не создавать объектные файлы (или уничтожать их довольно быстро после завершения).

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)", будет работать внутри make-файла, но не внутри cmd-файла. Там вам нужно использовать вариант% APP%, чтобы получить то, что вы хотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...