Reputation: 102205
I'm testing the feasibility of using MSBuild to perform an ARM build of an existing C++ project for Windows Phone and Windows Store. On Windows 7 with VS2012, I opened a Visual Studio 2012 ARM Developer Command Prompt. Then I tried it to see what would happen:
C:\cryptopp>msbuild /t:Build /p:Configuration=Debug;Platform=ARM cryptlib.vcxproj
Microsoft (R) Build Engine version 4.6.1055.0
Build started 10/6/2016 1:11:47 PM.
The target "Midl" listed in a BeforeTargets attribute at "C:\Program Files (x86
)\MSBuild\Microsoft.Cpp\v4.0\V110\BuildCustomizations\masm.targets (28,5)" does
not exist in the project, and will be ignored.
The target "CustomBuild" listed in an AfterTargets attribute at "C:\Program Fil
es (x86)\MSBuild\Microsoft.Cpp\v4.0\V110\BuildCustomizations\masm.targets (29,5
)" does not exist in the project, and will be ignored.
Project "C:\cryptopp\cryptlib.vcxproj" on node 1 (Build target(s)).
C:\cryptopp\cryptlib.vcxproj : error MSB4057: The target "Build" does not exist
in the project.
Done Building Project "C:\cryptopp\cryptlib.vcxproj" (Build target(s)) -- FAILE
D.
Build FAILED.
"C:\cryptopp\cryptlib.vcxproj" (Build target) (1)
->
C:\cryptopp\cryptlib.vcxproj : error MSB4057: The target "Build" does not exi
st in the project.
0 Warning(s)
1 Error(s)
I also tired adding the following to cryptlib.vcxproj
, but it resulted in the same error.
<ProjectConfiguration Include="Debug|ARM">
<Configuration>Debug</Configuration>
<Platform>ARM</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|ARM">
<Configuration>Release</Configuration>
<Platform>ARM</Platform>
</ProjectConfiguration>
Based on the errors above, I'm not sure if MSBuild supports ARM or if something else is wrong. I get similar results when testing on Windows 8 with VS2013. The similar result is another failure with a different error message.
Does the error message The target "Build" does not exist in the project
mean MSBuild does not support ARM? Can MSBuild be used to build a C++ project under ARM?
Upvotes: 1
Views: 1409
Reputation: 13317
Yes, this is absolutely possible.
The build system for libvpx generates vcxproj
/sln
files, including support for the ARM
platform, and these can be built both with msbuild.exe
or opened in Visual Studio.
The script that generates the project files can be found at https://chromium.googlesource.com/webm/libvpx/+/8b5eddf709b/build/make/gen_msvs_vcxproj.sh. If you want to try it out for yourself (to look at the actual generated project files), clone libvpx, and generate the visual studio project files (targeting Visual Studio 2012) like this (within an MSYS shell, in a directory outside of the libvpx directory):
../libvpx/configure --target=armv7-win32-vs11
make
(It might also work if you just run this within the libvpx directory with ./configure
, but I only verified it in a separate directory.)
The make step will also invoke msbuild.exe
if found in the path. If not, open a separate shell where you've got msbuild.exe
in the path, and build it like this:
msbuild vpx.sln -m -t:Build -p:Configuration=Release -p:Platform=ARM
Upvotes: 2