On Tue, 12 Nov 2013 00:26:15 GMT, Jared wrote:
So, I have a project:
{ "name": "dgame", "description": "An example project skeleton", "homepage": "http://example.org", "copyright": "Copyright © 2000, Your Name", "authors": [ "Your Name" ], "dependencies": { }, "dflags": [ "-I/Users/jared/src/DSFML/lib/", "-I/Users/jared/src/DSFML/src/" ], "lflags": [ "-L/Users/jared/src/DSFML-C-Builds/clang/lib/", ], "sourceFiles": [ "/Users/jared/src/DSFML/lib/libdsfml-system.a", "/Users/jared/src/DSFML/lib/libdsfml-graphics.a", "/Users/jared/src/DSFML/lib/libdsfml-window.a" ], "libs": [ "dsfml-system.2", "dsfml-window.2", "dsfml-graphics.2", ] }
When run, the compilation looks like this:
dmd -I/Users/jared/src/DSFML/lib/ -I/Users/jared/src/DSFML/src/ -w -g -debug -c -of/tmp/dub/369882575/temp.o -version=Have_dgame -I/Users/jared/Code/DGame/source -J/Users/jared/Code/DGame/views source/app.d source/mapping/generator.d source/mapping/map.d source/mapping/tile.d ../../src/DSFML/lib/libdsfml-system.a ../../src/DSFML/lib/libdsfml-graphics.a ../../src/DSFML/lib/libdsfml-window.a Linking... dmd -of/tmp/dub/369882575/dgame /tmp/dub/369882575/temp.o -L-L/Users/jared/src/DSFML-C-Builds/clang/lib/ -L-ldsfml-system.2 -L-ldsfml-window.2 -L-ldsfml-graphics.2 -g
And errors:
Undefined symbols for architecture x86_64: "_D5dsfml8graphics3all12__ModuleInfoZ", referenced from: _D3app12__ModuleInfoZ in temp.o ld: symbol(s) not found for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation) --- errorlevel 1 Error: Link command failed with exit code 1 Full exception: object.Exception@source/dub/compilers/dmd.d(120): Link command failed with exit code 1 ---------------- 5 dub 0x0000000103246657 pure @safe bool std.exception.enforce!(bool).enforce(bool, lazy const(char)[], immutable(char)[], ulong) + 107 6 dub 0x00000001032300ff void dub.compilers.dmd.DmdCompiler.invokeLinker(const(dub.compilers.compiler.BuildSettings), const(dub.compilers.compiler.BuildPlatform), immutable(char)[][]) + 987 7 dub 0x0000000103233f05 void dub.generators.build.BuildGenerator.generateProject(dub.generators.generator.GeneratorSettings) + 4897 8 dub 0x000000010320c2e4 void dub.dub.Dub.generateProject(immutable(char)[], dub.generators.generator.GeneratorSettings) + 160 9 dub 0x0000000103200fbd _Dmain + 6333 10 dub 0x00000001032e9951 extern (C) int rt.dmain2._d_run_main(int, char**, extern (C) int function(char[][])*).void runMain() + 33 11 dub 0x00000001032e949d extern (C) int rt.dmain2._d_run_main(int, char**, extern (C) int function(char[][])*).void tryExec(scope void delegate()) + 45 12 dub 0x00000001032e999d extern (C) int rt.dmain2._d_run_main(int, char**, extern (C) int function(char[][])*).void runAll() + 61 13 dub 0x00000001032e949d extern (C) int rt.dmain2._d_run_main(int, char**, extern (C) int function(char[][])*).void tryExec(scope void delegate()) + 45 14 dub 0x00000001032e9451 _d_run_main + 457 15 dub 0x00000001032e9280 main + 20 16 libdyld.dylib 0x00007fff9338b5fd start + 1 17 ??? 0x0000000000000002 0x0 + 2
(...)
This seems to be caused by DUB inserting the .a files on the compiler command line instead of the linker command line. I've committed a fix to git master.