On Wednesday, March 28, 2018 02:16:59 Joe via Digitalmars-d-learn wrote: > I'm trying to build a very simple library. For now it just has a > single class, constructor, destructor and one method. I added a > unit test right after the method, declared the targetType to be > "library" and a buildType of "unittest" (with options > "unittests", "debugMode", "debugInfo"). When I run > > dub run -b unittest > > it builds the library, but then says: > > Target is a library. Skipping execution. > > If I compile with ldc2 -unittest the linker throws the error: > > (.text+0x20): undefined reference to `main' > > If I add an empty main function to the source file, ldc2/gcc > manage to create an executable that can be invoked manually and > it runs through the unit test. > > Is this the best that can be done?
Run dub test The problem is that an executable needs a main, and a library doesn't have one, whereas when you're testing a library, you need an executable. So, a main must be inserted - e.g. with the -main flag to dmd. Just building the unittest build doesn't insert one. However, dub test _does_ deal with that for you. - Jonathan M Davis