Observed
A program's release layout may need to carry an executable that another package in the graph builds. GalTranslPP's GUI ships Updater.exe, which its workspace member Updater builds. The manifest cannot express "this dependency's executable, built for my target". The only edge that exposes another package's executable is a tool edge, used as tools = ["Updater"] with mcpp::dep_bin("gpp.updater", "Updater"), and that edge means a program for the build machine:
Request
A target artifact dependency: an edge that builds a dependency's bin target for the consumer's target and profile, and exposes the resulting path to the consumer's build program. Deploy and mcpp pack should also be able to use that path. Cargo's artifact dependencies (RFC 3028) are prior art.
Observed
A program's release layout may need to carry an executable that another package in the graph builds. GalTranslPP's GUI ships
Updater.exe, which its workspace memberUpdaterbuilds. The manifest cannot express "this dependency's executable, built for my target". The only edge that exposes another package's executable is a tool edge, used astools = ["Updater"]withmcpp::dep_bin("gpp.updater", "Updater"), and that edge means a program for the build machine:sub.target_triple = "",src/build/prepare.cppmnear line 10383). A cross build would therefore ship an executable for the wrong architecture.releaseprofile and its own toolchain (A host tool's sub-build resolves its own toolchain, not the one its key records, so a workspace pinned to one LLVM installs a second #710), although the workspace already builds the same member for the target.emit build-databasebuilds it in full (emit build-database builds host tools in full, so planning can cost a whole build of a tool package #707).Request
A target artifact dependency: an edge that builds a dependency's
bintarget for the consumer's target and profile, and exposes the resulting path to the consumer's build program. Deploy andmcpp packshould also be able to use that path. Cargo's artifact dependencies (RFC 3028) are prior art.