You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This is because $in & co are evaluated by an EdgeEnv, and when ParseEdge evaluates the bindings for a build edge, it doesn't build an EdgeEnv.
My use case is something like this, where commands are always set on build edges, never intentionally on a rule:
rule do
command = exit 1
build array_type_info.o: do array_type_info.cc
description = armeabi C++: src/array_type_info.cc
command = clang++ -c -o array_type_info.o array_type_info.cc
# Many more build lines like this
This is for a system that currently generates makefiles, and where it's hard to know rules in advance, so not really using rules makes things easier. I'd like to say $in and $out in the command of the build, so that input and output aren't repeated. (In practice, listing them twice seems to work well, even if the outputs are very long lists like they are for link lines. But it'd be nice if this worked for self-consistency too.)
The text was updated successfully, but these errors were encountered:
…le too.
Fixesninja-build#730. This has always been broken, but due to ninja-build#690 more paths are now
escaped (e.g. paths containing + characters, like file.c++). Also see
discussion in ninja-build#689.
The approach is to give EdgeEnv an enum deciding on whether or not to escape
file names, and provide functions that evaluate depfile and rspfile with that
set that to kNoEscape. (depfile=$out.d doesn't make sense on edges with
multiple outputs.)
This should be relatively safe, as $in and $out can't be used on edges, only
on rules (ninja-build#687).
This is because
$in
& co are evaluated by anEdgeEnv
, and whenParseEdge
evaluates the bindings for a build edge, it doesn't build anEdgeEnv
.My use case is something like this, where commands are always set on build edges, never intentionally on a rule:
This is for a system that currently generates makefiles, and where it's hard to know rules in advance, so not really using rules makes things easier. I'd like to say
$in
and$out
in thecommand
of the build, so that input and output aren't repeated. (In practice, listing them twice seems to work well, even if the outputs are very long lists like they are for link lines. But it'd be nice if this worked for self-consistency too.)The text was updated successfully, but these errors were encountered: