On 12/11/19 2:18 PM, Pavel Shkadzko wrote:
I have the following project structure.
my_proj/
script_1/runme_1.d
script_2/runme_2.d
evaluator.d
The project has a library dependency:
"dependencies": {
"mir": "~>3.2.0",
},
The "evaluator.d" script contains some general functions that convert
dataset and pass it to "runme_1.d" and "runme_2.d" scripts the following
way:
import mir.ndslice;
void main() {
import script_1.runme_1 : runTask1;
import script_2.runme_2 : runTask2;
mir_slice!(real*, 1LU, cast(mir_slice_kind)2)[]) dataset =
convertDataset("data.txt");
runTask1(dataset);
//runTask2(dataset); //disable for now
}
So, basically what I need is to be able to run "./evaluator" and get the
results by running the corresponding scripts.
I am trying to build the project the following way:
dub build --compiler=ldc2 --single evaluator.d
I get the following error:
Performing "debug" build using ldc2 for x86_64.
mir-core 1.0.2: target for configuration "library" is up to date.
mir-algorithm 3.7.2: target for configuration "default" is up to date.
mir-linux-kernel 1.0.1: target for configuration "library" is up to date.
mir-random 2.2.8: target for configuration "extended" is up to date.
survey ~master: building configuration "application"...
lld-link: error: undefined symbol:
_D5runme_114runTask1FS3mir7ndslice5slice__T9mir_sliceTPeVmi2VEQBoQBnQBi14mir_slice_kindi2ZQBvZv
referenced by C:\Users\user\my_proj\evaluator.d:89
.dub\obj\evaluator.obj:(_Dmain)
Error: linking with LLD failed
ldc2 failed with exit code 1.
How should I organize my project for this kind of setup?
(I am sorry for the absence of code formatting. I could not find any
quick howto here)
I would restructure your
folders this way:
my_proj/
source/
script_1/runme_1.d
script_2/runme_2.d
evaluator.d
then using `dub --compiler=ldc2`