Using xdc with VS2008 - problems [message #1011418] |
Tue, 19 February 2013 14:45 |
Ben White Messages: 1 Registered: February 2013 |
Junior Member |
|
|
Hi,
We have some code that's currently shared between 2 embedded platforms and PC Linux (Fedora). We use XDC (TI built) for our build process.
I have recently started porting some of this to Win32 in VS2008 and using XDC for the build on Windows.
The journey has been OK so far but a little stuck now.
When building an exe, I get the following error:
s: "C:/ti/xdctools_3_24_06_63/packages/xdc/cfg/Main.xs", line 156: Error: xdc.cfg.INCOMPATIBLE_TARGET_VERSION: current target 'microsoft.targets.Win32' [] is not compatible with targets used to build the following packages; package microsoft.targets.rts [in C:/ti/xdctools_3_24_06_63/packages/microsoft/targets/rts/] was built using 'microsoft.targets.Win32' [1,0,14.00,50727]
So the compiler version of my built exe is not the same as was used to build microsoft.targets.rts. Because it's empty.
On scrolling up the build output slightly, I see the problem:
1>Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 15.00.30729.01 for 80x86
1>Copyright (C) Microsoft Corporation. All rights reserved.
1>usage: cl [ option... ] filename... [ /link linkoption... ]
1>microsoft.targets: warning: version match failed on ''
Something in the regex in microsoft\targets\ITarget.xs is failing to extract the version data correctly.
So, a couple of questions:
+ How can I fix this? Do I need to rebuild XDC? If so, how?
+ Since I am using VS2008, cl actually reports a version of 15.00.30729.01. I guess that microsoft.targets.rts was built with VS2005. Is this an issue? If so, how do I fix it?
Thanks a lot,
Ben
|
|
|
Re: Using xdc with VS2008 - problems [message #1011618 is a reply to message #1011418] |
Tue, 19 February 2013 22:50 |
Sasha Slijepcevic Messages: 115 Registered: July 2009 |
Senior Member |
|
|
Ben,
as you found out, the code that deals with extracting the version numbers is in C:/ti/xdctools_3_24_06_63/packages/microsoft/targets/ITarget.xs, more specifically this part of the function getVersion:
if (xdc.exec(cmd, attrs, status) >= 0) {
var va = status.output.match(/Version\s+[0-9\.]+/mg);
if (va != null) {
var cver = va[0].replace(/[Version\s]/g, "");
var key = target.versionMap["cl_" + cver];
if (key == null) {
/* MS version numbers are x.y.z, where z is a build number */
key = "1,0," +
cver.replace(/([0-9]+\.[0-9]+)\.([0-9]+).*/, "$1,$2");
}
result += key;
}
else {
print("microsoft.targets: warning: version match failed on '"
+ status.output + "'");
}
}
However, looking at the version string it seems that the regex on the 2nd line of the code above should match 'Version 15.00.30729.01'. Anyway, you can debug further by simply changing the code in this file. You don't need to rebuild microsoft.targets package, just make the changes in ITarget.xs, clean and rebuild.
The first thing I would do is print the content of the string 'cmd' just to check if the command supplied to xdc.exec looks valid. I also recommend the long comment about vcPath in Win32.xdc because the problem could be caused by DLLs not being on the path. How did you configure Win32 target in your config.bld?
As for the difference in the build tools between 'rts' and your code, that should all work fine once the version of VS2008 is detected correctly. I am assuming that VS2008 linker will link VS2008 and VS2005 object files. If that's not the case, please let me know. You would have to rebuild the package 'rts' but that's fairly easy to do.
|
|
|
Powered by
FUDForum. Page generated in 0.03325 seconds