当从IDE和命令行构建项目时,我有不同的编译器行为,我无法解释。
详细问题的描述是相当大的,但它真的很简单。
文件夹布局:
C:\演示\Bin
C:\Demo\Project\CBuilder5版本
C:\Demo\源
Bin是输出文件夹,Project/CBuilder5保存项目(bpr文件),Project/Common保存包含的pas文件(IncludeUnits.pas),Source和Source/Common保存其他文件(pas&公司)。我觉得这是很平常的布局。
IncludeUnits.pas包括
:
unit IncludeUnits;
interface
uses
Test;
implementation
end.
测试.pas
unit Test;
interface
{$I Test.inc}
implementation
end.
C:\Demo\Source\Common\
:
// this file is empty
如果我从C++ Builder IDE编译这个项目,它将编译得很好。C++ Builder IDE在井手设置中没有任何其他路径。
bpr2mak.exe MyProject.bpr
命令。
此命令创建MyProject.mak文件,我可以在其中看到所有路径(“..\Source”和“..\Source\Common”是有问题的路径):
...
...
现在,我运行make命令:
它提供以下输出:
C:\PROGRA~1\Borland\CBUILD~2\BIN\dcc32-N2….\BIN-N0….\BIN-$Y+-$W-$R-v-JPHNE-M-UC:\PROGRA~1\Borland\CBUILD~2\BIN….\include;C:\PROGRA~1\Borland\CBUILD~2\bin..\include\vcl\普通;.\\来源;.\\Source\Common-D\u调试_RTLDLL;没有严格的-OC:\PROGRA~1\Borland\CBUILD~2\bin..\include;C:\PROGRA~1\Borland\CBUILD~2\bin..\include\vcl\普通;.\\来源;.\\Source\Common--BCB..\Common\IncludeUnits.PAS
Borland Delphi 13.0版版权所有(c)1983,99 Inprise Corporation
C:\Demo\Project\Common\IncludeUnits.pas(1)C:\Demo\Project\Common\IncludeUnits.pas(1)C:\Demo\Project\Common\IncludeUnits.pas(1)C:\Demo\Project\Common\IncludeUnits.pas(6)C:\Demo\Source\Test.pas(1)C:\Demo\Source\Test.pas(5)致命:找不到文件:“Test.inc”
如您所见-所有搜索路径都传递给编译器,文件(Test.inc)都在这里-在Source\Common文件夹中。但还是找不到?
正在从源复制Test.inc\Common到源
将
还有帮助。
为什么?我好像错过了什么。记住:project从IDE编译没有问题,Test.inc没有复制或更改声明。我错过了一些开关或dcc32?