4

複数のディレクトリから離れた場所にソースファイルを追加する(例:../../ source.cppまたは../../../somewhere_else/source.cpp、vs。source.cppまたは../source.cpp) WDK /DDKビルドでのSOURCES=宣言により、次のエラーが発生します。

Ignoring invalid directory prefix in SOURCES= entry

ビルドにリモートソースファイルを含めることは可能ですか?

4

3 に答える 3

5

これを直接行うことはできません。buildファイルの同じディレクトリまたは親ディレクトリにあるソースコードのみを処理するように明示的に設計されていsourcesます。任意の場所からのソースファイルを使用することはできません。特に、依存関係追跡システムはリモートファイルを解析および追跡できないようであるため、すべてのファイルがローカルであることを明示的にチェックして適用します。

2つの一般的な解決策があります:

  1. リモートコードを別のlibとしてビルドします(同じプロジェクト内の別のサブプロジェクト/ディレクトリを介してbuild、または独立したビルドステップを使用して)。

  2. を実行する各リモートソースファイルにローカルスタブを配置し、代わり#include "../../remote_source.cppにこのローカルスタブをSOURCES=リストに追加します。これは機能しますが、build/nmakeはの依存関係を追跡しませんremote_source.cppremote_source.cpp変更する場合はtouch、ローカルプロキシソースを使用するか、強制的に再構築する必要があります(ローカルプロキシobjを削除するか、で実行buildする-cZか、その他の方法で実行します)。

于 2009-01-04T22:57:50.393 に答える
1

別の方法は、source.inc を使用してこれらのファイルを含めることです。

于 2011-01-30T08:02:14.390 に答える
0

超古いトピックを復活させるのは嫌いですが、私もこれに出くわしました。

別の代替方法は、リモート ソースのオブジェクト ファイルのみをビルドする別のソース ファイルを内部に作成することです。したがって、基本的にはwhere_else\sourcesという名前のファイルを作成し、同じ中間ディレクトリを指定します。

次に、「dirs」ファイルを元のディレクトリに追加し、そのリモート フォルダーを指定します。次に、元のソース ファイルに次のようなものを追加して、オブジェクト ファイルに直接リンクします。

$(TARGETLIBS) = $(PROJECT_OBJ_ROOT)\$(O)\source.obj

この方法では、lib としてコンパイルする必要はありませんが、ビルドはそれを 1 つのように扱い、依存関係のチェックや場所の管理を行わずにリンクします。

当然、同じ中間ディレクトリと同じ元のソース ファイル名 (source.cpp) を指定すると、いくつかの問題が発生する可能性があります。

于 2013-07-30T21:25:58.983 に答える