在命令行上编译C ++ Builder项目

时间:2010-11-26 17:56:23

标签: build automation build-process c++builder

有没有办法从命令行编译C++Builder项目(特定的构建配置)?

类似的东西:

CommandToBuild ProjectNameToBuild BuildConfiguration ...

3 个答案:

答案 0 :(得分:9)

使用:

msbuild project.cbproj /p:config=[build configuration]

更多细节可以在 Building a Project Using an MSBuild Command 中找到。

答案 1 :(得分:8)

在C ++ Builder中自动化构建有不同的方法(根据我的经验,我说的是像5 and 6这样的旧C ++ Builder版本。)

如果您需要编译Delphi个单元,资源文件或汇编语言,您可以手动调用编译器 - bcc32.exedcc32.exebrcc32.exetasm32.exe源代码中的代码行和链接器 - ilink32.exe。

在这种情况下,您需要手动提供必要的输入文件,路径和键作为编译和链接的每个阶段的参数。

编译和链接所需的所有数据都存储在项目文件中,并且希望C ++ Builder安装中包含特殊实用程序,这些实用程序可以自动完成这项脏工作,为编译器和链接器提供必要的参数并运行它们。他们的名字是bpr2mak.exemake.exe

首先,您必须运行bpr2mak.exe,将项目* .bpr或* .bpk文件作为参数传递,然后您将获得一个特殊的* .mak文件作为输出,您可以使用它来馈送{ {1}},最终将构建您的项目。

看看这个简单的cmd脚本:

make.exe

您可以将“YourProject.mak”的真实名称作为参数提供给@bpr2mak.exe YourProject.bpr @ren YourProject.mak makefile @make.exe ,但最直接的方法是将* .mak文件重命名为“makefile”,然后make.exe会找到它。

要拥有不同的构建选项,您可以执行以下操作:

第一种方式:您可以在IDE中打开项目,编辑选项并使用不同的项目名称将其保存在同一文件夹中(通常有两个项目文件用于调试和发布编译选项)。然后,您可以为您的构建脚本提供不同的* .bpr文件。这样,它看起来很简单,因为它不涉及脚本,但如果发生了变化(添加了表格或单位等),用户将不得不手动维护所有项目文件的一致性。

第二种方法是制作一个编辑项目文件或制作文件的脚本。您将不得不解析文件,查找编译器和链接器相关的行并输入必要的密钥。您甚至可以在cmd脚本中执行此操作,但最好使用Python之类的专用脚本语言。

答案 2 :(得分:0)

未提及一点细节。

假定您具有外部依赖关系,并且文件夹中最初不存在 .dll 文件

您需要在 ILINK32.CFG 文件中包括外部依赖项。 该文件通常在文件夹中

C:\ Program Files(x86)\ Borland \ CBuilder6 \ Bin \ ilink32.cfg

(请考虑您的安装位置)

在此文件中,放置依赖项注释。

示例:TeeChart的依赖项如下所示(考虑最后一个参数):

-L“ C:\ Program Files(x86)\ Borland \ CBuilder6 \ lib”;“ C:\ Program Files(x86)\ Borland \ CBuilder6 \ lib \ obj”;“ C:\ Program Files(x86) \ Borland \ CBuilder6 \ lib \ release“;” C:\ Program Files(x86)\ Steema Software \ TeeChart 805 for Builder 6 \ Builder6 \ Include \“;” C:\ Program Files(x86)\ Steema Software \ TeeChart 805适用于Builder 6 \ Builder6 \ Lib \“

您还需要包含-f命令进行编译。

在cmd中,执行以下操作:

//first generate the file.mak
1 - bpr2mak.exe MyProject.bpr  
//then compile the .mak
2 - make.exe -f MyProject.mak

您还可以直接使用bpr2mak生成一个具有其他名称的临时mak文件,如上面的答案所述

bpr2mak.exe MyProject.bpr -oMyTempMak.mak