On 2012-11-28 20:39, Andrei Alexandrescu wrote:

I recall you have written such a tool (Orbit), so it is natural to have
a vested interest in promoting it and argue for its usefulness. Such
arguments don't eliminate the need for simpler tools that obviate
Orbit's use for a subset of cases.

1. Orbit is a package manager, not a build tool (although I'm developing that as well). A package manager deals with a packages, a build tool deals with files

2. I would not create a tool that cannot be used in the most simple uses cases. I'm thinking of scale. From the most simple use cases to the more advance use cases.

The build tool I'm developing will work like this. In it's most simple usage it can be used as:

$ build main.d

Which will do basically what RDMD does, but without running the executable. You can also pass arbitrary compile and link flags:

$ build main.d -release -L-lcurl

So far still just basically what RDMD does. The interesting thing is when you need to do more advanced build setups or avoiding repeating compile flags. Then you can start using a build script. The most simple build script will look something like this:

target :main

If there's a file named "main.d" it will build an executable, just like RDMD does. If there's a folder named "main" it will build a library of all files in that folder, recursively. Not something that RDMD can currently handle.

Adding some flags to the build script:

target :main do
  flags :build << "-release"
  flags :link << "-lcurl"
end

Then adding some special settings for a platform:

target :main do
  flags.build << "-release"
  flags.link << "-lcurl"

  if platform.windows
    flags.link << "some flag"
  end
end

Then adding a task for creating a release of the software:

task :release do
  # some code
end

--
/Jacob Carlborg

Reply via email to