我已经在属性代码生成增强指令集中VS2010 Express Edition
使用set 构建了一个解决方案。然后在针对预定义的程序测试中,按预期产生 2 的值。使用 构建的相同项目SSE2
C++
MARCO _M_IX86_FP
msbuild.exe
/p:"VCBuildAdditionalOptions=/arch:SSE2"
似乎使用 /arch:SSE2 为每个项目构建解决方案。但是,针对预定义的测试MARCO _M_IX86_FP
产生的值为零。
如何msbuild.exe
设置将 SSE2 的正确值嵌入到_M_IX86_FP
?
测试用例
// sse2testcase.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <iostream>
int _tmain(int argc, _TCHAR* argv[])
{
int dummy;
if (_M_IX86_FP == 0)
std::cout << "No sse" <<std::endl;
if (_M_IX86_FP == 1)
std::cout << "sse1" <<std::endl;
if (_M_IX86_FP == 2)
std::cout << "sse2" <<std::endl;
std::cin >> dummy;
return 0;
}
结果构建msbuild
未能提供正确的值_M_IX86_FP
解决方法:
1. 打开 Visual Studio 2010 IDE
2. 打开或创建解决方案。(任何解决方案都可以)
3. 工具->设置 复选标记专家设置
4. 在解决方案面板的底部选择属性(文本可能被截断)
5. 展开调试或发布。
6. 右击 Microsoft.Cpp.Win32.user
7. 展开 C++ 并选择 Code Generation
8. Next to Enable Enhanced Instruction Set。选择所需的设置。
9. 应用
10. 请求时退出 Visual Studio 2010 保存。
Microsoft.Cpp.Win32.user 设置适用于所有解决方案和项目。这会在 Msbuild.exe 调用 Cl.exe 时强制设置 /arch:SSE 或 /arch:SSE2。不需要开关 /p:"VCBuildAdditionalOptions=/arch:SSE2"。仍然不知道为什么它不起作用。
我想你不能回答你自己的问题。