C++ Boost


The action class

An action is performed in order to (re-)generate an artefact. it uses either a command string (executed in a platform-specific shell), or a Python callable.

Constructor

action()

Construct an empty (abstract) action. This is useful to define an abstract tool.

action(command)

Construct an action from the given command (string).

action(name, command)

Construct an action with the given name, from the given command (string).

Call operator

__call__(target, source)

Call the action explicitely. Returns success.

Examples

# define some actions
compile = action('c++.compile', 'c++ -c -o $(<) $(>)')
link = action('c++.link', 'c++ -o $(<) $(>)')
test = action('run_test', '$(>)')

# this demonstrates how to compound actions
def run_test(target, source):
  if test(target, source):
    print('PASS')
  else:
    print('FAIL')

# bind target to source using the above rules
obj = rule(compile, 'hello.o', 'hello.cpp')
bin = rule(link, 'hello', obj)
t = rule(run_test, 'test', bin, attrs=notfile|always)