digitalmars.D.learn - DUB and static libs
- abad (32/32) Apr 20 2016 I have a project which is a mixture of D, C++ and C. I have used
- Mike Parker (7/40) Apr 20 2016 "libs": [ "stdc++", "sid.a" ],
- Mike Parker (8/9) Apr 20 2016 Oh, if you're using DMD only you can also pass configure it using
I have a project which is a mixture of D, C++ and C. I have used Make for build automation so far but would like to migrate to DUB. I have hard time figuring out what to do with C / C++ sections of the program. DUB seems to ignore (probably sensibly) everything but D source files. I compiled a static library of the non-D sections of my program, and now I'd need to tell DUB to include the library in the linking stage. I tried to use "linkerFiles" argument in dub.json but that doesn't seem to do anything. Here's the full dub.json: { "name": "audio_test", "description": "audio test.", "copyright": "", "authors": [""], "dependencies": { "derelict-imgui": {"version":"~master", "path": "./DerelictImgui/"}, "derelict-glfw3": "~>1.1.0", "derelict-gl3": "~>1.0.12", "derelict-sdl2": "~>1.9.7", }, "libs": [ "stdc++" ], "stringImportPaths": [ "res" ], "linkerFiles": [ "sid.a" ] } sid.a is the library in question. Any ideas?
Apr 20 2016
On Wednesday, 20 April 2016 at 10:19:10 UTC, abad wrote:I have a project which is a mixture of D, C++ and C. I have used Make for build automation so far but would like to migrate to DUB. I have hard time figuring out what to do with C / C++ sections of the program. DUB seems to ignore (probably sensibly) everything but D source files. I compiled a static library of the non-D sections of my program, and now I'd need to tell DUB to include the library in the linking stage. I tried to use "linkerFiles" argument in dub.json but that doesn't seem to do anything. Here's the full dub.json: { "name": "audio_test", "description": "audio test.", "copyright": "", "authors": [""], "dependencies": { "derelict-imgui": {"version":"~master", "path": "./DerelictImgui/"}, "derelict-glfw3": "~>1.1.0", "derelict-gl3": "~>1.0.12", "derelict-sdl2": "~>1.9.7", }, "libs": [ "stdc++" ], "stringImportPaths": [ "res" ], "linkerFiles": [ "sid.a" ] } sid.a is the library in question. Any ideas?"libs": [ "stdc++", "sid.a" ], You'll also need to pass the appropriate linker-specific flag to set the library path in lflags if sid.a isn't already on the path. (dub already supports an importPaths field, but needs a libraryFlags field too given there are at least three different linkers to content with).
Apr 20 2016
On Wednesday, 20 April 2016 at 13:12:54 UTC, Mike Parker wrote:"libs": [ "stdc++", "sid.a" ],Oh, if you're using DMD only you can also pass configure it using sourceFiles: "sourceFile": ["/path/to/libsid.a"] The first is the equivalant of: dmd -L-lsid main.d ... And the second: dmd main.d /path/to/libsid.a ...
Apr 20 2016