我正在尝试在cygwin中自动构建一个(当前正在运行的)Visual Studio 2013,以便我可以自动构建我的项目并运行它。我的项目是使用VS2012工具集编译的。
我目前在cygwin中运行此bash脚本(基于此博文:http://anthonykosky.blogspot.com/2013/10/making-visual-studio-solutions-cmake.html):
error LNK2038: mismatch detected for '_MSC_VER': value '1700' doesn't match value '1800' in {file}.obj
当它编译时,我得到了重复的错误:
{{1}}
这似乎是版本1800(VS2013,我正在创建解决方案)和1700(VS2012,我需要编译的工具集)之间的不匹配。
我有点困惑,为什么MSBuild没有这样做,因为我的解决方案在VS2013中正确配置。我需要在构建脚本中进行哪些更改才能确保编译?
谢谢!
答案 0 :(得分:1)
这里有些不对劲:
PlatformToolset
属性)中指定,而不是在命令行上调用哪个vcvars文件${CMD} /c ...
命令为脚本执行 nothing ,您链接的文章完全错误:它的作用是启动一个新进程,执行bat文件,然后终止。批处理文件设置的任何环境变量只对进程本地,而不是对调用进程。msbuild <solution>
构建之前甚至不需要调用vcvars。 vcvars设置PATH / INCLUDE / ...变量,这样你就可以在命令行上手动调用编译器,但这不是你在这里做的:你只是在构建PATH / INCLUDE / ...是自动的项目由哪个PlatformToolset
确定总结以上所有内容:只需在您的解决方案上调用msbuild即可,您不需要调用vcvars,而且由于您没有提供足够的信息,我不知道您为什么会收到链接器错误要弄明白但原因不在脚本中:链接器错误意味着您正在混合使用不同工具集构建的目标文件。可能你需要进行重建。只搜索为“_MSC_VER”检测到的不匹配:值与值匹配会提供足够的搜索命中率。