www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - How to better organize dub project to get 3 exe from same codebase?

reply Suliman <evermind live.ru> writes:
I have got 3 small projects that have shared code base. At 
compile time they use few same classes. On runtime they use same 
config file. How to better to organize work with dub?
Feb 25 2016
parent reply Zardoz <luis.panadero gmail.com> writes:
On Thursday, 25 February 2016 at 18:57:08 UTC, Suliman wrote:
 I have got 3 small projects that have shared code base. At 
 compile time they use few same classes. On runtime they use 
 same config file. How to better to organize work with dub?
Try with subpacjages like I did : name "dedcpu" authors "Luis Panadero Guardeño" targetType "none" license "BSD 3-clause" description "DCPU-16 tools" subPackage { name "lem1802" description "Visual LEM1802 font editor" excludedSourceFiles "src/bconv.d" excludedSourceFiles "src/ddis.d" targetType "executable" targetName "lem1802" libs "gtkd" platform="windows" configuration "nogtk" { platforms "windows" } configuration "gtk" { platforms "posix" dependency "gtk-d:gtkd" version="~>3.2.0" } } subPackage { name "bconv" description "Binary file conversor. Converts between different data files for DCPU-16 emulators" targetType "executable" targetName "bconv" excludedSourceFiles "src/lem1802_fontview.d" excludedSourceFiles "src/ddis.d" excludedSourceFiles "src/ui/*" } subPackage { name "ddis" description "Dis-assembler for DCPU-16. Generates a DCPU-16 assembly dump from a binary file." targetType "executable" targetName "ddis" excludedSourceFiles "src/lem1802_fontview.d" excludedSourceFiles "src/bconv.d" excludedSourceFiles "src/ui/*" } https://github.com/Zardoz89/DEDCPU-16/blob/master/dub.sdl
Feb 25 2016
parent reply Suliman <evermind live.ru> writes:
Where to store shared classes?
Feb 25 2016
parent reply Suliman <evermind live.ru> writes:
On Thursday, 25 February 2016 at 19:09:59 UTC, Suliman wrote:
 Where to store shared classes?
{ "name": "123", "authors": [ "Suliman" ], "description": "A minimal D application.", "copyright": "Copyright © 2016, Suliman", "license": "proprietary", "subPackages": [ { "name": "App1", "description": "App1", "targetType": "executable", "sourcePaths": ["source/App1"] }, { "name": "App2", "description": "App2", "targetType": "executable", "sourcePaths": ["source/App2"] }, { "name": "App3", "description": "App3", "targetType": "executable", "sourcePaths": ["source/App3"] } } Should I link from subPackages to general source/ folder ?
Feb 25 2016
parent reply Luis <luis.panadero gmail.com> writes:
On Thursday, 25 February 2016 at 20:55:33 UTC, Suliman wrote:
 On Thursday, 25 February 2016 at 19:09:59 UTC, Suliman wrote:
 Where to store shared classes?
{ "name": "123", "authors": [ "Suliman" ], "description": "A minimal D application.", "copyright": "Copyright © 2016, Suliman", "license": "proprietary", "subPackages": [ { "name": "App1", "description": "App1", "targetType": "executable", "sourcePaths": ["source/App1"] }, { "name": "App2", "description": "App2", "targetType": "executable", "sourcePaths": ["source/App2"] }, { "name": "App3", "description": "App3", "targetType": "executable", "sourcePaths": ["source/App3"] } } Should I link from subPackages to general source/ folder ?
I don't link nothing. I have some shared D source code files between the 3 files (on src/dcpu). So each subpackage generates a executable file, excluding the not common files of the other subpackages. It isn't the best way of doing this, but just works for my case. Eventually i would change this. I think that alphaPhobos does what you are asking : https://github.com/rikkimax/alphaPhobos/blob/master/dub.sdl
Feb 25 2016
parent reply Suliman <evermind live.ru> writes:
What I am doing wrong? 
http://img.ctrlv.in/img/16/02/27/56d1aae37b77a.png
Feb 27 2016
parent Zardoz <luis.panadero gmail.com> writes:
On Saturday, 27 February 2016 at 13:56:21 UTC, Suliman wrote:
 What I am doing wrong? 
 http://img.ctrlv.in/img/16/02/27/56d1aae37b77a.png
Try : dub build code1:App1 dub build code1:App2
Feb 27 2016