將源文件添加到多個目錄(例如../../source.cpp或../../../somewhere_else/source.cpp,而不僅僅是source.cpp或../source.cpp ),以在一個WDK/DDK版本所SOURCES =聲明產生以下錯誤:是否有可能使Microsoft build.exe包含來自遠程目錄的資源?
Ignoring invalid directory prefix in SOURCES= entry
是否有可能包括在構建遠程源文件?
將源文件添加到多個目錄(例如../../source.cpp或../../../somewhere_else/source.cpp,而不僅僅是source.cpp或../source.cpp ),以在一個WDK/DDK版本所SOURCES =聲明產生以下錯誤:是否有可能使Microsoft build.exe包含來自遠程目錄的資源?
Ignoring invalid directory prefix in SOURCES= entry
是否有可能包括在構建遠程源文件?
這是不可能的直接做到這一點。 build
明確地僅用於處理sources
文件的同一目錄或父目錄中的 源代碼。它不能使用任意位置的源文件。特別是,它的依賴跟蹤系統似乎無法解析和跟蹤遠程文件,因此它明確檢查並強制所有文件都是本地的。
有兩種常用的解決方案:
建立遠程代碼作爲一個單獨的LIB(通過在同一build
項目,或者使用獨立的構建步驟另一個子項目/目錄)。
爲每個遠程源文件放置一個本地存根(#include "../../remote_source.cpp
),並將此本地存根添加到SOURCES=
列表中。這將工作,但build
/nmake
將而不是軌跡依賴關係在remote_source.cpp
。如果remote_source.cpp
發生更改,則必須要麼touch
本地代理源,要麼強制重建(刪除本地代理obj,使用-cZ
或其他方式運行build
)。
另一種方法是使用source.inc來包含這些文件。
討厭復活一個超古老的話題,但我也碰到過這個問題。
一種替代另一種方法是創建另一個源文件中,是專爲建立對象的遠程源的文件,所以基本上是一個文件名爲somewhere_else \源,並給它相同的中間目錄。
然後添加一個'dirs'文件到您的原始目錄並指定裏面的遠程文件夾。然後直接通過添加像這樣原來的源鏈接到目標文件文件:
$(TARGETLIBS) = $(PROJECT_OBJ_ROOT)\$(O)\source.obj
這樣,您就不必編譯爲lib中,但對待建設像一個和鏈接,沒有任何依賴性檢查或照顧地點。
當然,你可能會遇到一些問題,如果你給他們同樣的中間目錄和相同的原始源文件名(source.cpp)