代码之家  ›  专栏  ›  技术社区  ›  Alex

从IDE和命令行构建C++ Builder项目有什么不同?

  •  1
  • Alex  · 技术社区  · 14 年前

    当从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?

    1 回复  |  直到 14 年前
        1
  •  2
  •   Alex    14 年前

    我找到了原因:dcc32的命令行misses-I开关,它指定include文件的路径。

    出于某种原因,bpr2mak不尊重这个选项。幸运的是,它允许您为转换bpr指定备用模板->麦。我编辑了默认模板并添加了“-I”选项,将新模板传递给bpr2mak,然后它就成功了。

    推荐文章