Ошибка Borland E2194: Не удалось найти файл, проблема с вопросами в файле makefile

#batch-file #makefile #c builder-5

Вопрос:

У меня есть какой-то проект, построенный на Борланде, ниже версии.

введите описание изображения здесь

Я могу очистить/сделать/построить его внутри IDE

введите описание изображения здесь

До сегодняшнего дня мне удавалось делать это в cmd:

 cd C:reposgradlecppProjectsrcAssDelay T:Binbpr2mak.exe TSAssDelay.bpr T:Binmake.exe -fTSAssDelay.mak  

После выполнения команд выше у меня был .dll файл.

Сегодня все, что я сделал по всей системе, — это деинсталляция MSSql Server , и теперь я получаю следующую ошибку:

 C:reposgradlecppProjectsrcAssDelaygt;T:Binmake.exe -fTSAssDelay.mak MAKE Version 5.2 Copyright (c) 1987, 2000 Borland  T:Bin..BINbcc32 -WD -Od -H=T:Bin..libvcl50.csm -Hc -Vx -Ve -X- -r- -a8 -b- -k -y -v -vi- -c -tWM -w-par -I..DocGoodsCards;"C:Program FilesB orlandCBuilder5Bin";"D:My projecttmp";..GroupClients;T:Bin..Imports;P:Tr;L:RSD;"C:Program FilesBorlandCBuilder5Projects";..Common;"C:Progra m FilesCommon FilesSystemMAPI1049nt";C:;T:Bin..include;T:Bin..includevcl;T:Bin..includeatl;L:CDBTypeLibrary;L:EhLib;L:FastReport;L:Grap hics;L:ImgEdit;L:LGTypeLibrary;L:ML;L:Rx;L:TS;L:TSBF;L:TSTypeLibrary;L:VCLZip;"L:DL" -D_DEBUG;_RTLDLL;NO_STRICT;_ATL_APARTMENT_THREADED;USING _ATLVCL;_ATL_NO_SECURITY;INC_ATL_HEADERS;USEPACKAGES -n .TSAssDelay.cpp .TSAssDelay_ATL.cpp .TSAssDelay_TLB.cpp .FmDocAssDelayList.cpp .DocAssDelayImpl.cpp  .FmDocAssDelayItem.cpp .DmDocAssDelay.cpp .FmDocAssLimitList.cpp .DocAssLimitImpl.cpp .FmDocAssLimitItem.cpp .DmDocAssLimit.cpp .FmDocAssDelayFU.cpp .F mOrdChngFU.cpp .DmDocAssIU.cpp .FmDocAssIUList.cpp .FmDocAssIUItem.cpp .FmDocAssIULine.cpp .DocAssIUImpl.cpp .FmDocAssIUPercent.cpp .DmDocAss.cpp .DocAs sImpl.cpp .FmDocAss.cpp Borland C   5.5.1 for Win32 Copyright (c) 1993, 2000 Borland Error E2194: Could not find file 'projecttmp";..GroupClients;T:Bin..Imports;P:Tr;L:RSD;C:Program FilesBorlandCBuilder5Projects";..Common;C:Progra m.cpp' Error E2194: Could not find file 'FilesCommon.cpp' Error E2194: Could not find file 'FilesSystemMAPI1049nt";C:;T:Bin..include;T:Bin..includevcl;T:Bin..includeatl;L:CDBTypeLibrary;L:EhLib;L:F astReport;L:Graphics;L:ImgEdit;L:LGTypeLibrary;L:ML;L:Rx;L:TS;L:TSBF;L:TSTypeLibrary;L:VCLZip;L:DL" -D_DEBUG;_RTLDLL;NO_STRICT;_ATL_APARTMEN T_THREADED;USING_ATLVCL;_ATL_NO_SECURITY;INC_ATL_HEADERS;USEPACKAGES -n .TSAssDelay.cpp .TSAssDelay_ATL.cpp .TSAssDelay_TLB.cpp .FmDocAssDelayList.cpp .Doc AssDelayImpl.cpp .FmDocAssDelayItem.cpp .DmDocAssDelay.cpp .FmDocAssLimitList.cpp .DocAssLimitImpl.cpp .FmDocAssLimitItem.cpp .DmDocAssLimit.cpp .FmDocAs sDelayFU.cpp .FmOrdChngFU.cpp .DmDocAssIU.cpp .FmDocAssIUList.cpp .FmDocAssIUItem.cpp .FmDocAssIULine.cpp .DocAssIUImpl.cpp .FmDocAssIUPercent.cpp .DmDo cAss.cpp .DocAssImpl.cpp .FmDocAss.cpp .cpp'  

Так что теперь у меня нет результатов .dll .

Same error I have if I create and run make file from IDE using Project -gt; Export Makefile... , Project -gt; Execute Makefile .

Here is the part of Makefile, which supposedly reasons the error:

 SYSDEFINES = _RTLDLL;NO_STRICT;_ATL_APARTMENT_THREADED;USING_ATLVCL;_ATL_NO_SECURITY;INC_ATL_HEADERS;USEPACKAGES INCLUDEPATH = ..DocGoodsCards;"C:Program FilesBorlandCBuilder5Bin";"D:My projecttmp";..GroupClients;$(BCB)Imports;P:Tr;L:RSD;"C:Program FilesBorlandCBuilder5Projects";..Common;"C:Program FilesCommon FilesSystemMAPI1049nt";C:;$(BCB)include;$(BCB)includevcl;$(BCB)includeatl;L:CDBTypeLibrary;L:EhLib;L:FastReport;L:Graphics;L:ImgEdit;L:LGTypeLibrary;L:ML;L:Rx;L:TS;L:TSBF;L:TSTypeLibrary;L:VCLZip;"L:DL" LIBPATH = "C:Program FilesBorlandCBuilder5ProjectsLib";L:Bpl;..DocGoodsCards;"C:Program FilesBorlandCBuilder5Bin";"D:My projecttmp";"L:DevExpressExpressEditors LibraryLib";L:DevExpressExpressInplaceEditorsLib;L:DevExpressExpressQuantumGridLib;..GroupClients;L:DevExpressLib;$(BCB)Imports;P:Tr;L:RSD;"C:Program FilesBorlandCBuilder5Projects";..Common;"C:Program FilesCommon FilesSystemMAPI1049nt";L:EhLib;$(BCB)Lib;$(BCB)LibObj;L:Lib;L:ML;L:TS;L:TSBF;"L:DL"  

What else, before we had some script as part of automated build system, that fixed makefile:

 @echo off REM -- Prepare the Command Processor -- SETLOCAL ENABLEEXTENSIONS SETLOCAL DISABLEDELAYEDEXPANSION  if "%~1"=="" findstr "^::" "%~f0"amp;GOTO:EOF  for /f "tokens=1,* delims=]" %%A in ('"type %1|find /n /v """') do (  set "line=%%B"  if defined line (  call set "line=echo.%%line:"=."%%"  rem call set "line=echo.%%line:%~1=%~2%%"  for /f "delims=" %%X in ('"echo."%%line%%""') do %%~X  ) ELSE echo. )  echo HERE  

It is really impossible to understand what is going here… I think it is easier to understand compiled code in hex editor, than MS batch files… What I think is done there, is replacing of quotes. I tried to remove the quotes, but it didn’t helps…

Может ли кто-нибудь помочь мне скомпилировать этот проект из cmd?

Обновить

Хорошо, поэтому я получаю команду, созданную из make.exe -fTSAssdelay.mak и удаляю все пути к каталогам, которые содержали пробелы:

 @echo off  T:Binbcc32 -WD -Od -H=T:Bin..libvcl50.csm -Hc -Vx -Ve -X- -r- -a8 -b- -k -y -v -vi- -c -tWM -w-par ^ -IL:TS;L:TSBF -I..GroupClients -I..DocGoodsCards -IT:Bin..Imports -IP:Tr -IL:RSD -I..Common -IC: ^ -IT:Bin..include -IT:Bin..includevcl -IT:Bin..includeatl -IL:CDBTypeLibrary -IL:EhLib -IL:FastReport ^ -IL:Graphics -IL:ImgEdit -IL:LGTypeLibrary -IL:ML -IL:Rx -IL:TSTypeLibrary -IL:VCLZip -IL:DL ^ -D_DEBUG;_RTLDLL;NO_STRICT;_ATL_APARTMENT_THREADED;USING_ATLVCL;_ATL_NO_SECURITY;INC_ATL_HEADERS;USEPACKAGES -n ^ .TSAssDelay.cpp .TSAssDelay_ATL.cpp .TSAssDelay_TLB.cpp .FmDocAssDelayList.cpp .DocAssDelayImpl.cpp ^ .FmDocAssDelayItem.cpp .DmDocAssDelay.cpp .FmDocAssLimitList.cpp .DocAssLimitImpl.cpp .FmDocAssLimitItem.cpp ^ .DmDocAssLimit.cpp .FmDocAssDelayFU.cpp .FmOrdChngFU.cpp .DmDocAssIU.cpp .FmDocAssIUList.cpp .FmDocAssIUItem.cpp ^ .FmDocAssIULine.cpp .DocAssIUImpl.cpp .FmDocAssIUPercent.cpp .DmDocAss.cpp .DocAssImpl.cpp .FmDocAss.cpp  rem -I"C:Program FilesBorlandCBuilder5Projects" -I"C:Program FilesCommon FilesSystemMAPI1049nt" rem -I"C:Program FilesBorlandCBuilder5Bin" -I"D:My projecttmp" ^  

Как вы можете видеть, их также можно держать вместе: -IL:TS;L:TSBF

Итак, теперь я получаю .obj файлы, но мне все еще нужно связать их.

Если я удалю эти пути из файла makefile, я получу:

 C:reposgradlecppProjectsrcAssDelaygt;make.exe -fTSAssDelay.mak MAKE Version 5.2 Copyright (c) 1987, 2000 Borland  C:PROGRA~1BorlandCBUILD~1Bin..BINbcc32 -WD -Od -H=C:PROGRA~1BorlandCBUILD~1Bin..libvcl50.csm -Hc -Vx -Ve -X- -r- -a8 -b- -k -y -v -vi- -c -tWM -w-par -I..DocGoodsCar ds;..GroupClients;C:PROGRA~1BorlandCBUILD~1Bin..Imports;P:Tr;L:RSD;..Common;C:;C:PROGRA~1BorlandCBUILD~1Bin..include;C:PROGRA~1BorlandCBUILD~1Bin..includevcl;C:PRO GRA~1BorlandCBUILD~1Bin..includeatl;L:CDBTypeLibrary;L:EhLib;L:FastReport;L:Graphics;L:ImgEdit;L:LGTypeLibrary;L:ML;L:Rx;L:TS;L:TSBF;L:TSTypeLibrary;L:VCLZip;"L :DL" -D_DEBUG;_RTLDLL;NO_STRICT;_ATL_APARTMENT_THREADED;USING_ATLVCL;_ATL_NO_SECURITY;INC_ATL_HEADERS;USEPACKAGES -n..Common ..CommonFmSelDoctype.cpp Borland C   5.5.1 for Win32 Copyright (c) 1993, 2000 Borland Error E2266: No file names given  

Комментарии:

1. Could not find file 'projecttmp";..GroupClients;T:Bin..Imports;P:Tr;L:RSD;C:Program FilesBorlandCBuilder5Projects";..Common;C:Progra m.cpp' На самом деле он ищет файл с таким искаженным именем файла, что, конечно, не удается. Почему сейчас вдруг просят поискать этот файл, я не знаю. Я думаю, вы сделали больше, чем просто удалили SQL server?

2. И? Понятно, что здесь проблема с цитатами, мне просто нужно понять, в чем проблема.

3. Может быть, это «проблема с новой строкой», когда Windows требовала CRLF, и ваш редактор внезапно изменил все это на просто LF в файле makefile?

4. Этот вопрос, скорее всего, не подходит для формата вопросов и ответов из-за того, что существуют внешние факторы, которые читатели не могут распознать. Имея это в виду, проблема, по-видимому , связана с обработкой параметров и, возможно, поддержкой Borland пробелов в путях, т. Е. projecttmp[...].cpp То, что он не может найти, отделяется -I[...]D:My projecttmp , а затем .cpp добавляется, потому что он думает, что это файл. (То же самое с FilesCommon.cpp from C:Program FilesCommon Files и т. Д.)

5. @OlgaPshenichnikova I think it is easier to understand compiled code in hex editor, than MS batch files Я полностью согласна! Этот синтаксис причиняет боль моему мозгу. Хорошо, что вы нашли решение! 🙂

Ответ №1:

Решения

Удаление путей

Итак, одно из решений состоит в том, чтобы удалить все представления путей с пробелом. Если у вас есть какой-либо каталог заголовка include или библиотеки с пробелом в пути, вам нужно выполнить одно из следующих действий:

  1. Переименуйте папку
  2. Сделайте жесткую ссылку (если это возможно в Windows)
  3. Смонтировать папку на виртуальный диск

Используя perl, это может быть что-то вроде:

 $_ = $makefile_content s/"[^"]*";?//  

Исправьте шаблон

Другим решением является использование шаблона makefile, в котором вы замените BCC32 определение с MAKE SECTION :

 !if !$d(BCC32) BCC32 = bcc32ide !endif  

Исходный блок является:

 !if !$d(BCC32) BCC32 = bcc32 !endif  

Похоже, что bcc32ide.exe уважает пути, которые включают в себя пробелы.

Исходный шаблон default.bmk помещен в папку bin Borland, поэтому скопируйте файл, замените BCC32 определение, пусть будет новое имя patched.bmk . Чем звонить bpr2mak.exe с измененным шаблоном. На финишном звонке make.exe :

 gt; bpr2mak.exe project.bpr -tpatched.bmk gt; make.exe -fproject.mak