複数のディレクトリから離れた場所にソースファイルを追加する(例:../../ source.cppまたは../../../somewhere_else/source.cpp、vs。source.cppまたは../source.cpp) WDK /DDKビルドでのSOURCES=宣言により、次のエラーが発生します。
Ignoring invalid directory prefix in SOURCES= entry
ビルドにリモートソースファイルを含めることは可能ですか?
これを直接行うことはできません。build
ファイルの同じディレクトリまたは親ディレクトリにあるソースコードのみを処理するように明示的に設計されていsources
ます。任意の場所からのソースファイルを使用することはできません。特に、依存関係追跡システムはリモートファイルを解析および追跡できないようであるため、すべてのファイルがローカルであることを明示的にチェックして適用します。
2つの一般的な解決策があります:
リモートコードを別のlibとしてビルドします(同じプロジェクト内の別のサブプロジェクト/ディレクトリを介してbuild
、または独立したビルドステップを使用して)。
を実行する各リモートソースファイルにローカルスタブを配置し、代わり#include "../../remote_source.cpp
にこのローカルスタブをSOURCES=
リストに追加します。これは機能しますが、build
/nmake
はの依存関係を追跡しませんremote_source.cpp
。remote_source.cpp
変更する場合はtouch
、ローカルプロキシソースを使用するか、強制的に再構築する必要があります(ローカルプロキシobjを削除するか、で実行build
する-cZ
か、その他の方法で実行します)。
別の方法は、source.inc を使用してこれらのファイルを含めることです。
超古いトピックを復活させるのは嫌いですが、私もこれに出くわしました。
別の代替方法は、リモート ソースのオブジェクト ファイルのみをビルドする別のソース ファイルを内部に作成することです。したがって、基本的にはwhere_else\sourcesという名前のファイルを作成し、同じ中間ディレクトリを指定します。
次に、「dirs」ファイルを元のディレクトリに追加し、そのリモート フォルダーを指定します。次に、元のソース ファイルに次のようなものを追加して、オブジェクト ファイルに直接リンクします。
$(TARGETLIBS) = $(PROJECT_OBJ_ROOT)\$(O)\source.obj
この方法では、lib としてコンパイルする必要はありませんが、ビルドはそれを 1 つのように扱い、依存関係のチェックや場所の管理を行わずにリンクします。
当然、同じ中間ディレクトリと同じ元のソース ファイル名 (source.cpp) を指定すると、いくつかの問題が発生する可能性があります。