目前在我的應用我只是有一個單一的源代碼樹C++單獨的Include和源目錄和#INCLUDE
MyApp/Source
|-Precompiled.hpp
|-Precompiled.cpp
|-Thing.hpp
|-Thing.cpp
|-Main.cpp
|-Component
| |-ComponentThing.hpp
| |-ComponentThing.cpp
| |-...
|-ComponentB
| |-ComponentBThing.hpp
| |-...
|-PluginCandiate
| |-PluginThing.hpp
| |-PluginThing.cpp
| |-...
...
但是我希望做一個插件系統(這樣少的東西是與核心應用程序的一部分清晰的邊界),我想移動到單獨的Include \ MyApp樹中的那麼多.hpp文件。所以新的樹可能看起來像:
MyApp/Include/MyApp
|-Thing.hpp
|-Component
| |-ComponentThing.hpp
| ...
|-ComponentB
| |-ComponentBThing.hpp
MyApp/Source
|-Precompiled.hpp
|-Precompiled.cpp
|-PrivateThing.hpp
|-PrivateThing.cpp
|-Component
| |-ComponentThing.cpp
| |-...
|-ComponentB
| |-...
...
Plugins/PluginCandiate/Source
|-PluginThing.hpp
|-PluginThing.cpp
...
現在用目前的方式,我只包含我的包含路徑上的「源」。這意味着,例如在ComponentThing.cpp
我可以做說:
#include "Precompiled.hpp"
#include "ComponentThing.hpp"
#include "ComponentOtherThing.hpp"
#include "ComponentB/ComponentBThing.hpp"
由於當前目錄永遠是第一位的包括路徑上。但是,如果我拆分我的公共包含目錄和源目錄,情況就不再這樣了。我可以將Include/Myapp /放在包含路徑中,但是Id仍然需要全部組件路徑。
是否有一種簡單的方法可以避免這種情況(使用MSVC MSBuild和Linux make文件),還是隻有完整的#includes纔是標準做法?或者有其他人通常會做的事情(例如,我考慮了構建後步驟來「導出」主源樹中列出的公共標題集)?
您能否詳細說明您的意思:「我可以將Include/Myapp /放在包含路徑中,但是Id仍然需要全部組件路徑」? – downhillFromHere 2014-09-11 07:54:51
因此,對於說ComponentThing.cpp我不需要一些包括像「../../Include/MyApp/Component/ComponentThing.hpp」的垃圾,但我仍然需要「組件/ ComponentThing.hpp」,而不是隻是「 ComponentThing.hpp「 – 2014-09-11 09:29:22