[x] Ensure artifact directory exists, just before the task compilation step.
[x] Run system commands.
The first pass will defer task the tree evaluation algorithm and task registration entirely to the user rez.cpp source file.
In terms of interface, the rez task runner system merely expects the user's rez.cpp main function to handle:
task name(s), optionally empty, forwarded along to rez.cpp argv
handle a list task (-l), also forwarded along to rez.cpp argv
rez may intercept and discard a smell set of canned flags before handing the rest to the user's rez.cpp program. These are essentially documented in rez's usage output.
This way has several advantages:
No importing of the rez library is necessary for people to use rez.
No requirement for the user's rez.cpp file to match the same C++ syntax used in rez itself.
This enables a dramatically simple rez.cpp setup. rez does not require any complex build tool configuration required for the user's rez.cpp. The convention is for rez.cpp to build as a standalone, with few dependencies outside of stdlibc++ / POSIX.
Any third party dependencies can be managed by an external vendoring process. Unknown if conan, for example supports distinguishing between project runtime dependencies versus project buildtime dependencies.
Of course, if the user deeply desires to manage their rez.cpp file itself as part of an integrated cmake/make/autotools/etc. build system, that is up to them.
The first pass will defer task the tree evaluation algorithm and task registration entirely to the user rez.cpp source file.
In terms of interface, the rez task runner system merely expects the user's rez.cpp main function to handle:
-l
), also forwarded along to rez.cpp argvrez may intercept and discard a smell set of canned flags before handing the rest to the user's rez.cpp program. These are essentially documented in rez's usage output.
This way has several advantages:
This enables a dramatically simple rez.cpp setup. rez does not require any complex build tool configuration required for the user's rez.cpp. The convention is for rez.cpp to build as a standalone, with few dependencies outside of stdlibc++ / POSIX.
Any third party dependencies can be managed by an external vendoring process. Unknown if conan, for example supports distinguishing between project runtime dependencies versus project buildtime dependencies.
Of course, if the user deeply desires to manage their rez.cpp file itself as part of an integrated cmake/make/autotools/etc. build system, that is up to them.