如何让命令行 Delphi-2007 编译器忽略或抑制特定警告
How do I get the command line Delphi-2007 compiler to ignore or suppress a particular warning
我正在使用 Delphi 2007。我知道如何让 IDE 编译器收到 suppress/ignore 特定警告。
但是如何让命令行编译器执行此操作?
您使用 -W-[WARNING]
选项。以下示例关闭 W1036 ("Variable %s might not have been initialized"):
dcc32 test.dpr -W-USE_BEFORE_DEF
我发现要使用的警告名称的唯一方法是在 IDE 中创建一个简单的控制台项目,添加将产生您要识别的警告的代码,然后设置Project->Options-Compiler-Hints and Warnings 以抑制该警告。然后构建你的项目。显示消息window,转到输出选项卡,Ctrl+A到Select全部, Ctrl+C复制.
创建一个新的控制台应用程序。
program Test1;
{$APPTYPE CONSOLE}
uses
SysUtils;
begin
WriteLn('Test1');
ReadLn;
end.
使用 Project->Options->Compiler`->Hints and Warnings,然后关闭您要抑制的警告。
- 构建您的测试项目。
- 在 输出 选项卡中 消息 window, select 所有 ( Ctrl+A 或使用上下文菜单)并复制到剪贴板(Ctrl+C 或通过上下文菜单)。
- 在新的记事本 window(或新的编辑器选项卡)中,粘贴剪贴板的内容。你会发现一大段 dcc32.exe 命令行与此类似(但可能长得多)(我 强调 相关部分需注意):
Build started 02/05/2016 2:48:48 PM.
Project "E:\Code\Project1.dproj" (Make target(s)):
Target CoreCompile:
c:\rad studio.0\bin\dcc32.exe -DDEBUG;DEBUG -I"c:\rad studio.0\lib";"c:\rad studio.0\Imports";"C:\Users\Public\Documents\RAD Studio.0\Dcp";E:\Code\FastMM4;E:\madCollection\madBasic\BDS4;E:\madCollection\madDisAsm\BDS4;E:\madCollection\madExcept\BDS4;"E:\Code\Virtual Treeview\Source";E:\code\Indy10_5294\Lib\Core;E:\code\Indy10_5294\Lib\System;E:\code\Indy10_5294\Lib\Protocols;
--SNIPPED ANOTHER DOZEN LINES-- --no-config -W-USE_BEFORE_DEF Project1.dpr
Build succeeded.
0 Warning(s)
0 Error(s)
Time Elapsed 00:00:00.12
因此,作为这一切的结果,我们确定了 USE_BEFORE_DEF 作为 W1036 的警告名称,用于命令行编译器,以及图示具体如何将其提供给编译器。
当然,您可以禁用多个警告以识别它们;为了简单起见,我只使用了一个,并删除了很多生成的命令行输出。
我正在使用 Delphi 2007。我知道如何让 IDE 编译器收到 suppress/ignore 特定警告。
但是如何让命令行编译器执行此操作?
您使用 -W-[WARNING]
选项。以下示例关闭 W1036 ("Variable %s might not have been initialized"):
dcc32 test.dpr -W-USE_BEFORE_DEF
我发现要使用的警告名称的唯一方法是在 IDE 中创建一个简单的控制台项目,添加将产生您要识别的警告的代码,然后设置Project->Options-Compiler-Hints and Warnings 以抑制该警告。然后构建你的项目。显示消息window,转到输出选项卡,Ctrl+A到Select全部, Ctrl+C复制.
创建一个新的控制台应用程序。
program Test1; {$APPTYPE CONSOLE} uses SysUtils; begin WriteLn('Test1'); ReadLn; end.
使用 Project->Options->Compiler`->Hints and Warnings,然后关闭您要抑制的警告。
- 构建您的测试项目。
- 在 输出 选项卡中 消息 window, select 所有 ( Ctrl+A 或使用上下文菜单)并复制到剪贴板(Ctrl+C 或通过上下文菜单)。
- 在新的记事本 window(或新的编辑器选项卡)中,粘贴剪贴板的内容。你会发现一大段 dcc32.exe 命令行与此类似(但可能长得多)(我 强调 相关部分需注意):
Build started 02/05/2016 2:48:48 PM.
Project "E:\Code\Project1.dproj" (Make target(s)): Target CoreCompile: c:\rad studio.0\bin\dcc32.exe -DDEBUG;DEBUG -I"c:\rad studio.0\lib";"c:\rad studio.0\Imports";"C:\Users\Public\Documents\RAD Studio.0\Dcp";E:\Code\FastMM4;E:\madCollection\madBasic\BDS4;E:\madCollection\madDisAsm\BDS4;E:\madCollection\madExcept\BDS4;"E:\Code\Virtual Treeview\Source";E:\code\Indy10_5294\Lib\Core;E:\code\Indy10_5294\Lib\System;E:\code\Indy10_5294\Lib\Protocols; --SNIPPED ANOTHER DOZEN LINES-- --no-config -W-USE_BEFORE_DEF Project1.dpr
Build succeeded. 0 Warning(s) 0 Error(s) Time Elapsed 00:00:00.12
因此,作为这一切的结果,我们确定了 USE_BEFORE_DEF 作为 W1036 的警告名称,用于命令行编译器,以及图示具体如何将其提供给编译器。
当然,您可以禁用多个警告以识别它们;为了简单起见,我只使用了一个,并删除了很多生成的命令行输出。