$include_dir="/home/hyper-archives/boost-build/include"; include("$include_dir/msg-header.inc") ?>
Subject: Re: [Boost-build] embed manifest file
From: Steven Watanabe (watanabesj_at_[hidden])
Date: 2014-03-28 17:41:27
AMDG
On 03/28/2014 01:49 PM, tr1gun wrote:
>
> The problem i faced that the properties variable in the link / link.dll
> rule is only a raw string and the file target for embed-manifest-file is
> lost.
What do you mean by a "raw string?" The list of
properties should contain <embed-manifest-file>object(file-target)@NNNNN
which you can extract with
[ feature.get-values <embed-manifest-file> : $(properties) ]
> I tried it with a variable like DEF_FILE but i faced some problems with
> labels in the action. Are actions executed like batch files?
Yes. b2 creates a temporary batch file and
executes it with cmd.exe. If I need to access
a variable like this in the rule, I usually use
something like
flags msvc.manifest MANIFEST_FILE <embed-manifest-file> ;
rule manifest ( targets * : sources * : properties * )
{
local file = [ on $(targets) return $(MANIFEST_FILE) ] ;
}
> I also
> noticed that boost build doesn't recognize the failure on the next run
> and you would need to delete the target dll or rebuild everything.
> Therefore i introduced a new target so it can detect the failure on the
> next run.
>
Are you sure about that? b2 is supposed delete targets
that failed to update. It does relink when the existing
embed-manifest handling fails (which happens on a regular
basis "mt.exe : general error c101008d: Failed to write
the updated manifest to the resource of file "xxx.exe".
The process cannot access the file because it is being
used by another process.").
In Christ,
Steven Watanabe