On Friday, 12 July 2013 at 21:54:02 UTC, Walter Bright wrote:
On 7/12/2013 1:42 PM, Tofu Ninja wrote:
So I had an idea recently, wouldn't it be cool to have the
ability to call an
executable at compile time and capture its output. Something
like the string
imports but instead of opening and reading a text file, it run
an executable,
waits for it to finish, and grabs its output.
It would get really cool if you could pass this executable
some args and then
mix in its out put into your own code. It could be used
similarly to how CTFE
are used but with out the overhead of trying to compile that
function and what
not and with out the limitations on what it can do.
I could imagine all sorts of things that would be possible
with this that is
currently not.
Not sure if this is something that could be implemented
easily, but seems like
something that could be done and something that would be
really cool.
This is actually done in the makefile that builds DMD. A
program (optabgen) is compiled and then run. Optabgen's output
is several .c files which are then compiled into DMD's binary.
The programs impcnvgen and idgen do similar things.
It is a very powerful technique.
I did similar stuff for a mixed D/C++ program. The build
contained some intermediary utilities used to spit out infos
about the C++ code (typically sizeof and other characteristics
like that) that could then be used to generate part of the
binding in D.