ã¿ã¹ã¯ã«ã€ããŠç°¡åã«èª¬æããŸãã åæã«ãããã€ãã®ãããžã§ã¯ããé²è¡äžã§ãã ãããžã§ã¯ãã¯ããããã¯ãŒã¯ã«æ¥ç¶ãããããŒãäžã®ããžã¿ã«ããã€ã¹ïŒå€æ°ã®ããã€ã¹ïŒãåããããã€ã¹ã§ãã ããã¯ãããŒãžã§ã³ç®¡çã·ã¹ãã ã䜿çšããŠè¿œè·¡ããå¿ èŠããããªã³ããŒãããã€ã¹ãœãããŠã§ã¢ã«é¢ãããã®ã§ãã
ããŸããŸãªããã€ã¹ã§åããªã³ããŒãããã€ã¹ããããŸãããç¹å®ã®ããã€ã¹ããããŸãã ããã€ã¹ã¯ããŸããŸãªéçºè ãããââã°ã©ã ã§ããäžéšã®ããã€ã¹ã¯è«è² æ¥è ãããã°ã©ã ããŸãã ãªã³ããŒãããã€ã¹ã®ããã»ããµïŒã³ã³ãããŒã©ïŒã®ãã©ã³ãã¯ç°ãªããŸãã ç°ãªãããã€ã¹ã¯åãã©ã€ãã©ãªã䜿çšã§ããŸãïŒãã©ã€ããŒãæ°åŠãªã©ã
éçºè ã¯åºåŒµïŒè©ŠçšïŒã«å€ãã®æéãè²»ãããŸããããã§ã¯ãã³ãŒããå€æŽããã€ã³ã¿ãŒãããã§æŽæ°ã亀æããå¿ èŠããããŸãã
çŸåšããã®ãããªäœæ¥ãããŒãžã§ã³ç®¡çã·ã¹ãã ãªãã§å®è¡ãããããšã¯é©ãã¹ãããšã§ãã ãããããããã¯ãããã»ã©å€ãã®ãããžã§ã¯ãããªããéçºè ã2人ããããªãã£ãããã«å¯èœã§ããã ããããç©äºã¯ãã¯ããã®ããã«é²ãããšãã§ããŸããã
ããŒãžã§ã³ç®¡çã®æŠå¿µã圢æãããã®æŠå¿µã«æ²¿ã£ãŠãããžã§ã¯ãããªãã¡ã¯ã¿ãªã³ã°ãå§ããŠããŸãã ç§ãã¡ã¯æ ã®å§ãŸãã«ããŸãããç§ãã¡ã¯èŠã€ãã解決çã奜ãã§ããããããããã¹ãŠã®èœãšãç©ŽãèŠåœãããªããããå°æ¥çã«ã¯æ¯æãããšãã§ããŸãã èªè ã®æšå¥šãããšã©ãŒãä¿®æ£ããã®ã«åœ¹ç«ã€ããšãé¡ã£ãŠããŸãã
ããã§ããŸãã«å¶åŸ¡ã®æŠå¿µã«ã€ããŠã åæ£ããŒãžã§ã³ç®¡çã·ã¹ãã ã䜿çšããããšã¯åºæ¬ã§ãïŒäžèšã®é »ç¹ã§é·æéã®åºåŒµãåç §ããŠãã ããïŒã ããã€ãã®çç±ã§ãéžæã¯æ°Žæã«èœã¡ãŸããããGeetã¯ããããéããŠããã§ãããã
ãªããžããªã¯1ã€ã§ã¯ãªãããããå šäœïŒããªãŒãæ§é ïŒã§äœ¿çšãããŸãã ãªããžããªã¯çžäºæ¥ç¶ãããç¹å®ã®é åºã§ãã©ã«ãã«é åžãããŸãã ããã«ããã®ãããªã¹ãã¬ãŒãžã®ã»ããããªããžããªããªãŒãšåŒã³ãŸãã
1ã€ã®ã¹ãã¬ãŒãžããªãŒããµãŒããŒã§ãã¹ããããŸãã 圌ã®ã¯ããŒã³ã¯å°å ã®PCéçºè ã«ãããŸãã éçºè ã¯ãããŒã«ã«ããªãŒãŸãã¯ãã®åã ã®ãã©ã³ããå¿ èŠã«å¿ããŠè€è£œããŸãã
ã¹ãã¬ãŒãžããªãŒãã³ãã¬ãŒãã¯æ¬¡ã®ãšããã§ãã
Repositories | +â.CrossplatformLib1 | +â.CrossplatformLib2 | +â... | +âPlatform1 | | | +â.Platform1Lib1 | | | +â.Platform1Lib2 | | | +â... | +âPlatform2 | | | +â.Platform2Lib1 | | | +â.Platform2Lib2 | | | +â... | +â... | +âDevices | | | +â.Device1 | | | +â.Device2 | | | +â... | +âVehicles | +âVehicle1 | +âVehicle2 | +â...
ååã®å é ã«ãããããã¯ããªããžããªã瀺ããŸãïŒäŸïŒ.Device1ïŒã ãããã®ãªãååã¯ãããã€ã¹ãªã©ã®éåžžã®ãã©ã«ããŒã§ãã
ããªãŒã®ã«ãŒãïŒRepositoriesãã©ã«ããŒã®ã«ãŒãïŒã«ã¯ãã¯ãã¹ãã©ãããã©ãŒã ã©ã€ãã©ãªïŒæ°åŠãã¢ã«ãŽãªãºã ãªã©ïŒãå«ã.CrossplatformLibXãªããžããªããããŸãã
PlatformXãã©ã«ããŒã¯åãã¬ãã«ã«ãããPlatformXãã©ãããã©ãŒã åºæã®ã©ã€ãã©ãªãŒãå«ã.PlatformXLibYãªããžããªãŒããããŸãã ããšãã°ãWindowsã®ãããã¯ãŒã¯ãã©ã€ããŒã
æäžäœã®[ããã€ã¹]ãã©ã«ããŒã«ã¯ãããŸããŸãªããã€ã¹ã§äœ¿çšã§ãããªã³ããŒãããã€ã¹çšã®.DeviceXãœãããŠã§ã¢ã®ãªããžããªããããŸãã
æåŸã®æäžäœãã©ã«ããŒã¯Vehiclesã§ãã ããŸããŸãªVehicleXããã€ã¹ã®ãããžã§ã¯ããå«ãŸããŠããŸãã
ãŸããç¹å®ã®VehicleXããã€ã¹ã®ãããžã§ã¯ãã¯ããªããžããªãŸãã¯ãªããžããªã®ã»ããã«ããããšãã§ããŸãã ããã¯ããã»ã©éèŠã§ã¯ãªãã®ã§ãåŸã§è©³ãã説æããŸãã
èæ ®ãããæ§é ã¯ãçžäºã®ã¹ãã¬ãŒãžã®å Žæã瀺ããŠããŸãã 次ã«ãã¹ãã¬ãŒãžèªäœã®é 眮æ¹æ³ãèŠãŠã¿ãŸãããã
ã¹ãã¬ãŒãžã¡ã«ããºã ã¯å®è³ªçã«äœ¿çšãããŸãïŒç§ãç解ããŠããããã«ãææ°ã®ããŒãžã§ã³ç®¡çã·ã¹ãã ã«ã¯ãã¹ãŠãã®ãããªæ©äŒããããŸãïŒã
ããšãã°ãããã€ãã®Devices \ .DeviceXããã€ã¹ãèããŸãã ããã€ã¹Xãã¯ãã¹ãã©ãããã©ãŒã ã©ã€ãã©ãªYãšãã©ãããã©ãŒã Zå°çšã®ã©ã€ãã©ãªã䜿çšãããšããŸãã次ã«ãDevices \ .DeviceXãã©ã«ããŒã®ã¬ãã«ã§ã.CrossplatformLibYãšPlatformZ \ .PlatformZLibNã®ã¹ãã¬ãŒãžã¯ããŒã³ãäœæãããŸãã
Repositories | +âDevices | +â.DeviceX | +â.CrossplatformLibY | +â.PlatformZLibN | +âDeviceXSpecificFolder1 | +â...
.CrossplatformLibYããã³.PlatformZLibNãªããžããªãšå ±ã«ããã©ã«ããŒã«ã¯ãDeviceXSpecificFolderMãªã©ã®ãã©ã«ããŒå ã®ããã€ã¹Xåºæã®ãœãŒã¹ã³ãŒããã¡ã€ã«ãå«ãŸããŸãã
çžå¯Ÿãã¹ã¯ã³ã³ãã€ã©èšå®ãã¡ã€ã«ã§äœ¿çšããããããã®ãã¡ã€ã«èªäœã¯ããŒãžã§ã³ç®¡çã·ã¹ãã ã«ãã£ãŠè¿œè·¡ãããŸãã .DeviceXãããžã§ã¯ããå¥ã®ã³ã³ãã¥ãŒã¿ãŒã«è»¢éããå¿ èŠãããå Žåãããšãã°ãã©ãããããã«ã³ããŒããŠåºåŒµã§æã¡æ©ãå Žåã¯ã.DeviceXãã©ã«ããŒã®ã¿ãã³ããŒããã ãã§ååã§ããã³ã³ãã€ã«ã«å¿ èŠãªãã¹ãŠã®æ å ±ãå«ãŸããŠããŸãã ã³ããŒããã.DeviceXãã©ã«ããŒãžã®ãã¹ãå€æŽããªãã§ããå¿ èŠã¯ãŸã£ãããããŸããã
次ã«ãå€ãã®ãããã¯ãŒã¯ããã€ã¹.DeviceYãå«ãVehicleXã®ãããžã§ã¯ãã«æ»ããŸãã æãåçŽãªã±ãŒã¹ã§ã¯ããã¹ãŠã®ãªã³ããŒãããã€ã¹ããããã¯ãŒã¯å ã®ã¹ã¬ãŒããµãã¹ã¯ã©ã€ããŒã§ããããã®ãã¡ã®1ã€ããã¹ã¿ãŒã§ãã ããããã¹ã¿ãŒãšåŒã³ãŸãããã äž»èŠãªãµãã¹ã¯ã©ã€ããŒã¯ã·ã¹ãã çµ±åã®äžå¿ã§ãã圌ã¯ãã¹ãŠã®ã¡ãã»ãŒãžã®ãã©ãŒããããç¥ã£ãŠããããªã¯ãšã¹ããéä¿¡ããåçãåãåããŸãã察å¿ãã.VehicleXã¹ãã¬ãŒãžã¯æ¬¡ã®æ§é ãæã€ããšãã§ããŸãã
Repositories | +âVehicles | +â.VehicleX | +â.DeviceY | +â.DeviceZ | +âDeviceM | +â... | +âMaster
ãããã¯ãŒã¯ããã€ã¹ã¯ããŠãããŒãµã«ïŒç°ãªãããã€ã¹ã§äœ¿çšïŒãŸãã¯ç¹å®ã®ããããã§ãã æåã®å Žåã察å¿ããã¹ãã¢ïŒ.DeviceYãšããïŒã¯ãDevices \ .DeviceYã¹ãã¢ã®ã¯ããŒã³ã§ãã 2çªç®ã®ã±ãŒã¹ã§ã¯ãããã€ã¹ãããžã§ã¯ããåå¥ã®ãªããžããªïŒ.DeviceZïŒãšããŠå¶åŸ¡ãããã.VehicleXã¹ãã¬ãŒãžã®åå¥ã®ãµããã©ã«ããŒãšããŠç·šæãããã§ããŸãïŒããšãã°ãããã¯.VehicleX \ DeviceMã§ãïŒã ã¹ãã¬ãŒãžãåããããªã¢ã³ãã¯ããããžã§ã¯ãããïŒã¯ããŒãã³ã°ã«ãã£ãŠïŒåé¢ãããããšããç¹ã§ããã䟿å©ã§ãã
åé¡ã¯ã ãŠãããŒãµã«ããã€ã¹.DeviceYã®ãã¹ãŠã®ãœãŒã¹ã.VehicleXã¹ãã¬ãŒãžã«ä¿åããå¿ èŠããããŸããïŒ å®éãäž»èŠãªãã¹ã¿ãŒãµãã¹ã¯ã©ã€ããŒãéçºããã«ã¯ããŠãããŒãµã«ããã€ã¹ã®ã€ã³ã¿ãŒãã§ã€ã¹ïŒæãåçŽãªå Žåã¯ã¡ãã»ãŒãžã®åœ¢åŒïŒãç¥ãã ãã§ååã§ãã ãããã®åœ¢åŒã¯äžè¬ã«å®å®ããŠãããã»ãšãã©å€æŽãããŸããã åæã«ãããã€ã¹ã®å®è£ ã¯å®æçã«å€æŽãããŸããå°ãªããšãéçºã®åæ段éã§ã¯ãã€ã³ã¿ãŒãã§ãŒã¹ãããã¯ããã«é »ç¹ã«å€æŽãããŸãã
.VehicleXãããžã§ã¯ããš.DeviceYãããžã§ã¯ãã匷åã«æ¥ç¶ããã®ã¯ãªãã§ããïŒ ãããã¯ãŒã¯ããã€ã¹ã®å®è£ ã®å éšè©³çŽ°ãå€æŽãããšãã«ãã·ã¹ãã ã€ã³ãã°ã¬ãŒã¿ãŒïŒãã¹ã¿ãŒéçºè ïŒããããã®ãããžã§ã¯ããç解ããŠåæããå¿ èŠãããã®ã¯ãªãã§ããïŒ
ããã€ã¹ãããžã§ã¯ãå šäœã§ã¯ãªããã€ã³ã¿ãŒãã§ã€ã¹ã®ã¿ãåæãããšãäžèšã®åé¡ã¯è§£æ±ºãããŸãã ã€ã³ã¿ãŒãã§ã€ã¹ã远跡ããããã®1ã€ã®ãªãã·ã§ã³ã¯ããããããããŸããã å¥ã®ãªããžããª.Interfaceã§ããã€ã¹ã€ã³ã¿ãŒãã§ã€ã¹ãã¡ã€ã«.DeviceYãéžæããŸãã
Repositories | +âDevices | +â.DeviceY | +â.Interface | | + +- device_y.h | +âSource | +â...
.Interfaceãªããžããªã¯ãåäžã®device_y.hããããŒãã¡ã€ã«ã§æ§æãããããšããããããŸãã
ããã§ã.VehicleXããã€ã¹ã®ãªããžããªã§ã.DeviceYãããžã§ã¯ãå šäœã§ã¯ãªãããã®.DeviceY \ .Interfaceã€ã³ã¿ãŒãã§ã€ã¹ã®ã¿ã远跡ã§ããŸãã ãã®ã¯ããŒã³ã¯ããªããžããª.VehicleX \ Devices \ .DeviceYã«é 眮ã§ããŸãã
Repositories | +âVehicles | +â.VehicleX | +âDevices | | + +-.DeviceY | | + +-... | +â... | +âMaster
.VehicleX \ Devicesãã©ã«ããŒã«ã¯ãä»ã®ãããã¯ãŒã¯ããã€ã¹ã®ã€ã³ã¿ãŒãã§ã€ã¹ãé 眮ã§ããŸãã ãããã¯ãŒã¯ããã€ã¹.VehicleX \ Devices \ .DeviceYã®ã€ã³ã¿ãŒãã§ã€ã¹ã®åã¹ãã¢ãžã®ãã¹ããã¹ã¿ãŒã³ã³ãã€ã©ã®èšå®ã«æå®ããªãããã«ããã«ã¯ã.VehicleX \ Devicesãã©ã«ããŒã«#includeã䜿çšããŠdevice_y.hãã¡ã€ã«ãé 眮ã§ããŸãã ãã®åŸããã¹ã¿ãŒã³ã³ãã€ã©ã®å Žåããã¹.. \ Devicesã®ã¿ãç»é²ããã ãã§ååã§ãã
è«è² æ¥è ããããã¯ãŒã¯ããã€ã¹ãéçºããŠããå Žåãã€ã³ã¿ãŒãã§ã€ã¹ã䜿çšããŠèæ ®ãããææ³ã¯ç¹ã«äŸ¿å©ã§ãã ãã®å Žåãããã€ã¹ã®ãœãŒã¹ã³ãŒãã¯å©çšã§ããªãå¯èœæ§ããããŸãããããšãã°ãæè¡çãªã¿ã¹ã¯ã®åœ¢æ段éã§ãã€ã³ã¿ãŒãã§ã€ã¹ãã¡ã€ã«ã¯äžè²«ããŠããå¿ èŠããããŸãã
ããã¯ãã¹ãŠäžè¬çãªçšèªã§ãã ãã ãããã¹ãŠã®è³ªåãããã«èšèŒãããŠããããã§ã¯ãããŸããã ããšãã°ãå®è¡å¯èœãã¡ã€ã«ïŒãã€ããªïŒã®ããŒãžã§ã³ãå¶åŸ¡ããæ¹æ³ã¯ãŸã 決å®ããŠããŸããã ã¹ãã¬ãŒãžãèšåŒµããªãããã«ãããŒãžã§ã³ã·ã¹ãã ã®å¶åŸ¡äžã«çœ®ãããšã¯æ¬åœã«æãŸãããããŸããã ãããŠãåãããžã§ã¯ããå€ãã®å®è¡å¯èœãã¡ã€ã«ã§æ§æãããŠããããšãèæ ®ãããšããdllã®æªå€¢ããäºæ³ãããŸãã