Here is how I do it -- I "empower" the LabVIEW Project to do it for me! I create (at least) 3 Folders in my Project -- Host, which contains sub-Folders called "Globals", "Sub-VIs", and "Types", along with the main Host VI; Target, which contains a similar set of sub-Folders along with the main Target VI; and "Common", with the same 3 sub-folders.
So within my (single) Project Folder in My Documents\LabVIEW\My Project, there are three folders "Common", "Host", and "Target". Every LabVIEW Global, Sub-VI, and Type (.ctl) file that appears in both the Host and Target goes into appropriate sub-Folders in the \Common folder, those unique to the Host into \Host, and those unique to the Target into \Target. When I look at the Project Tree, "MyComputer" has a sub-folder called "Common" and one called "Host", while "MyTarget" has sub-folders "Common" and "Target". That (for me) takes care of the Dependencies -- all I have to do is to make sure that I save new VIs in the proper folder -- I may have to occasionally turn on "auto-populate" or delete from the Project sub-VIs or TypeDefs that have been added or removed and "gotten lost", but that seems to handle the "shared" Globals, Sub-VIs, and TypeDefs quite nicely.
So both the MyComputer (or Host-side) and MyTarget (or Target-side) have two Top-Level folders (e.g. Common & Host, or Common & Target) that contains sub-folders called Globals, Sub-VIs, and Types, to segregate those elements that are shared between Host and Target (in the folder Common) and those that are only in Host (in folder Host) or Target (in folder Target).
Hope that is clear, and hope it gets your Dependencies straightened out.
Bob Schor