1

Delphi dcc コマンドライン コンパイラ(dcc32.exe、dcc64.exe、dcclinux64.exe など)の -i オプションとは正確には何ですか。-u とは対照的に? ヘルプはこれを簡単に述べているだけです(エンバカデロのドキュメントはこの件について詳しく説明していないようです):

    -I<paths> = Include directories
    -U<paths> = Unit directories

しばらくの間、-u はソース コードをインクルードするためのもので、-i はコンパイル済みの .dcu ファイルをインクルードするためのものだと思っていましたが、そうではないようです。-i でソース コードをインポートし、-u で .dcu ファイルをインポートするケースも見られますが、これも問題なく機能しているようです。もう 1 つの考えは、-u は Delphi IDE のプロジェクトの検索パスに対応するものであり、-i は Delphi IDE のグローバル ライブラリ パスに対応するものであるということですが、それも決定的ではないようです。

-i または -u のいずれかをいつ使用する必要がありますか?

4

1 に答える 1

3

このページの備考セクションhttp://docwiki.embarcadero.com/RADStudio/Sydney/en/Include_file_(Delphi)の開始

$I パラメータ ディレクティブは、指定されたファイルをコンパイルに含めるようコンパイラに指示します。実際には、ファイルは {$I filename} ディレクティブの直後にコンパイルされたテキストに挿入されます。

ファイル名のデフォルトの拡張子は .pas です。ファイル拡張子なしで指定されたファイル名には、常に .pas 拡張子が付けられます。ファイル名でディレクトリ パスが指定されていない場合、Delphi は、現在のモジュールと同じディレクトリでファイルを検索するだけでなく、[プロジェクト|オプション] の [Delphi コンパイラ] ページにある [検索パス] 入力ボックスで指定されたディレクトリも検索します。ダイアログ ボックス (またはコマンド ライン コンパイラの -I オプションで指定されたディレクトリ)。...」

理解しておくべき重要なことは、これは一般的なソース ファイルの検索ではなく、ソース ファイル内で

{$inc }

また

{$include }

ソース ファイル内のディレクティブ。例えば

unit SomeUnit;

{$inc SomeIncludeFile}

interface

[...]

{$inc} または {$include} ディレクティブ内で名前が付けられたファイルは「インクルード ファイル」として知られているため、引用されたページのタイトル トピックです。Remarksの最後の段落に記載されている制限に従って、ディレクティブはソース ファイルのほとんどどこにでも表示でき、コンパイル中に、コンパイラは指定されたファイルの内容をディレクティブ (ファイル名を含む) に置き換えます。Turbo Pascal での のサポートはinclude files、ユニットのサポートよりも前のものであり、主に、共有コードや定義など、2 つ以上のソース ファイルが同一のテキストを含んでいるかのように動作できるようにすることを目的としていました。

この設定は、プロジェクト内のソース ファイルのコンパイル中にコンパイラが検出したディレクティブによって名前が付けられた-iファイルなど、ファイルを探す 1 つ以上のフォルダーをコンパイラに指示します。SomeIncludeFileinclude

この-u設定は、コンパイル中にユニット ファイル (.Pas や .Dcu など) を探す場所をコンパイラに指示します。

于 2021-03-21T10:38:10.410 に答える