Giter Site home page Giter Site logo

d-bootstrap's Introduction

Hello D

Build Status Code coverage

To get you started with D, this is a small hello world application. The Makefile will automatically download a D compiler - no installation necessary:

make
./bin/hello

You can use LDC as well:

make bin/hello_opt
./bin/hello_opt

I'm sure you can take it from there. It's all up to you! Happy coding!

I don't like Make

Instead of a Makefile, you can of course always use the install script to setup a D compiler:

source $(curl https://dlang.org/install.sh | bash -s dmd)

Or maybe you have a D compiler already installed on your system? You can use this Makefile for bootstrapping your D compiler and making sure the same compiler is used on all systems:

make setup-dmd
./bin/dmd

Analogous the command make setup-ldc makes sure ldc is installed locally and available via bin/ldc (LLVM-like interface) and bin/ldmd (DMD-like interface).

I want to use package X

For more advanced projects, usage of DUB

  • D's package manager - is recommended. If you work in a environment where a D compiler isn't easily available or you simply want to lock your project to a specific compiler version, you can use the packaged dub for your scripts:

    ./bin/dub

Of course, you can also call dub from Make and integrate dub with other build steps:

make dub

I want to use Travis for my project

Simply enable the project on Travis.

I want to use Continuous Integration service X for my project

The D compiler bootstrapping in make will auto-magically work. Alternatively, use the install script.

I want to have nice documentation for my project

The easiest way to get started, is to use ddox:

dub -b ddox

Have a look at veelo's gist to see how it can be setup to automatically publish the latest documentation to your GitHub pages.

You might also want to try dpldocs.info's automatic generation.

I want to have tests and code coverage for my project

First, add a unittests:

unittest
{
    assert(1 == 1, "D math works as expected.");
}

All tests can be executed with:

dub test

To generate coverage listing too, use the unittest-cov build mode:

dub test -b unittest-cov

You can browse the .lst files manually, but if you use GitHub or BitBucket, usage of the CodeCov app is recommended.

I want to have static code analysis and linting

D-Scanner is the swiss-army knife for D source code:

dub fetch dscanner
dub run dscanner -- --styleCheck source

Add a custom configuration:

dub run dscanner -- --defaultConfig
mv ~/.config/dscanner/dscanner.ini .dscanner.ini
dub run dscanner -- --styleCheck source --config .dscanner.ini

I want to have automatic source formatting

dfmt is a source code formatter for D:

dub fetch dfmt
dub run dfmt

Why don't you use Docker?

Docker is typically used to allow a consistent work environment, but in my use cases Docker isn't available. If you want to use Docker, check out the D docker images.

What are the other Makefile targets?

Target Description
bin/hello A normal build with DMD
bin/hello_opt An optimized build with LDC
bin/hello_lto An optimized build with LDC and link-time optimization (LTO)
dub Runs the application via DUB
dub_opt Runs the application via DUB with LDC
test Runs all unittests
style Runs static code analysis and style checking
format Reformats all code
clean Removes all generated data

I have more questions

Feel to ask them at the D: Learn Forum.

d-bootstrap's People

Contributors

wilzbach avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

Forkers

dkgroot

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.