Boost logo

Boost-Build :

Subject: Re: [Boost-build] building unit test framework for Windows CE
From: Maria Kosche (mkos_at_[hidden])
Date: 2017-05-16 11:57:41


Am 2017-05-12 16:00, schrieb Maria Kosche:
> Hey,
>
> I am currently trying to compile an automatic testing tool for Windows
> CE, which is using some of the boost libraries.
> I already achieved to compile nearly every library I need, but I am
> facing problems while building the unit test framework library which I
> need as a dynamic library.
> Building it as static was no problem whatsoever.
>
> I am using the following command to invoke b2:
> C:\boost\boost-build\bin\b2 ^
> -a ^
> -q ^
> --with-test ^
> --debug-building ^
> -d 13 ^
> link=shared ^
> toolset=msvc-arm ^
> variant=release ^
> architecture=arm ^
> address-model=32 ^
> stage
>
> I attached my user-config.jam and my compiler configuration batch file
> in case there is important information.
>
> Invoking b2 leads to the following error message:
>
> Delaying msvc.manifest.dll
> bin.v2\libs\system\build\msvc-arm\release\threading-multi\boost_system-vc-mt-1_63.dll:
> 1 targets not ready
> Executing using a command file and the shell: cmd.exe /Q/C
> Command string for CreateProcessA(): 'cmd.exe /Q/C
> C:\Users\macio\AppData\Local\Temp\jam4400-00-00.bat'
> msvc.manifest.dll
> bin.v2\libs\system\build\msvc-arm\release\threading-multi\boost_system-vc-mt-1_63.dll
>
> if exist
> "bin.v2\libs\system\build\msvc-arm\release\threading-multi\boost_system-vc-mt-1_63.dll.manifest"
> (
> call
> "C:\Users\macio\AppData\Local\Temp\b2_msvc_arm_msvc9-vincell-config_x86.cmd"
> >nul
> mt -nologo -manifest
> "bin.v2\libs\system\build\msvc-arm\release\threading-multi\boost_system-vc-mt-1_63.dll.manifest"
> "-outputresource:bin.v2\libs\system\build\msvc-arm\release\threading-multi\boost_system-vc-mt-1_63.dll;2"
> )
>
> Der Befehl "mt" ist entweder falsch geschrieben oder
> konnte nicht gefunden werden.
> 0.015600 sec system; 0.000000 sec user; 60.003400 sec clock
> ...failed msvc.manifest.dll
> bin.v2\libs\system\build\msvc-arm\release\threading-multi\boost_system-vc-mt-1_63.dll
> bin.v2\libs\system\build\msvc-arm\release\threading-multi\boost_system-vc-mt-1_63.lib...
> ...removing
> bin.v2\libs\system\build\msvc-arm\release\threading-multi\boost_system-vc-mt-1_63.dll
> ...removing
> bin.v2\libs\system\build\msvc-arm\release\threading-multi\boost_system-vc-mt-1_63.lib
> ...skipped <pstage\lib>boost_system-vc-mt-1_63.dll for lack of
> <pbin.v2\libs\system\build\msvc-arm\release\threading-multi>boost_system-vc-mt-1_63.dll...
> ...failed updating 1 target...
> ...skipped 1 target...
> ...updated 1 target...
>
> The error message in German is translated something like: Command 'mt'
> is misspelled or cannot be found.
> I also attached the whole debug output in the log.txt file.
>
> Nontheless, it seems, that the linker (or compiler?) is expecting a
> command at a point where no command is given and instead reads some
> flags and tries to interpret them as a command.
> I am wondering why this error only occurs when I try to compile the
> test library as dynamic and I really don't know what the exact problem
> is and how to fix it.
>
> Hopefully, someone has an idea or could give me a tip where to look
> since I am looking for the cause for hours now.
> Many thanks in advance.
> Greetings,
> Chris

Ok, apparently mt.exe is a tool for generating signed files and
catalogs.
It is included in the Windows SDK and should be installed together with
Visual Studio.
For Visual Studio 2008, which I am using, the shipped Windows SDK is
version 6.0a.
I looked into the directory of the Windows SDK and I could find the
mt.exe at the following path:
C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bin
This seems to be a default path for mt. I included the path into the
path environment variable and also added it to the path variable in the
config.bat for configuring the compiler when calling the b2 command and
using the user-config.jam.
The error saying that the command 'mt' could not be found still remains.
Does boost expect the mt.exe at a different location? I think it's
strange, that mt.exe is in the 'Program Files' instead of the 'Program
Files (x86)' directory, but after some installing and testing of
different Windows SDK versions the command is always placed inside the
respective directory in the 'Program Files' directory.
Do I have to place it somewhere else for boost to find it? Or do I have
to set a variable or anything alike? Or am I really missing the x86
version of the mt command?
Every help and every tipp is highly appreciated.

Greetings,
Chris


Boost-Build list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk