Как можно настроить msbuild.exe для встраивания правильного значения для SSE2 в _M_IX86_FP? - PullRequest
2 голосов
/ 23 июня 2011

Я построил решение с VS2010 Express Edition с набором SSE2 в свойствах C++ расширенный набор команд генерации кода.Затем в тесте программы с предопределенным значением MARCO _M_IX86_FP выдается ожидаемое значение 2. Тот же проект, созданный с помощью msbuild.exe с

/p:"VCBuildAdditionalOptions=/arch:SSE2"

, создает решение с / arch: SSE2 для каждогопроект.Но тест с предопределенным MARCO _M_IX86_FP дает значение ноль.

Как можно настроить msbuild.exe для встраивания правильного значения для SSE2 в _M_IX86_FP?

testcase

// 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 ++ и выберите Генерация кода
8. Рядом с полем Включить расширенный набор инструкций.Выберите нужный параметр.
9. Примените
10. Выйдите из сохранения Visual Studio 2010, когда потребуется.

Настройки Microsoft.Cpp.Win32.user применяются ко всем решениям и проектам.Это заставляет параметр / arch: SSE или / arch: SSE2 присутствовать, когда Msbuild.exe вызывает Cl.exe.Переключатель / p: «VCBuildAdditionalOptions = / arch: SSE2» не требуется.До сих пор не знаю, почему это не работает.

Полагаю, вы не можете ответить на свой вопрос.

Ответы [ 2 ]

2 голосов
/ 04 июля 2011
1 голос
/ 24 июня 2011

Обходной путь:

  1. Открыть Visual Studio 2010 IDE
  2. Открыть или создать решение. (Подойдет любое решение)
  3. Инструменты-> Настройки Галочка Настройки эксперта
  4. В нижней части панели решений выберите Свойства (текст может быть обрезан)
  5. Развернуть либо Отладка, либо Выпуск,
  6. Щелкните правой кнопкой мыши Microsoft.Cpp.Win32.user
  7. Разверните C ++ и выберите Генерация кода
  8. Рядом с «Включить расширенный набор инструкций». Выберите желаемую настройку.
  9. Применить
  10. Выйти из сохранения Visual Studio 2010 по запросу.

Настройки Microsoft.Cpp.Win32.user применяются ко всем решениям и проектам. Это заставляет параметр / arch: SSE или / arch: SSE2 присутствовать, когда Msbuild.exe вызывает Cl.exe. Переключатель / p: «VCBuildAdditionalOptions = / arch: SSE2» не требуется. До сих пор не знаю, почему это не работает.

...