Интеграция MinGW с Visual Studio 2010 (проект Makefile)

Я пытаюсь заставить MinGW (Версия 4.7.2) работать с Visual Studio 2010, чтобы использовать некоторые из новых функций C ++ 11 (к сожалению, я все еще на WindowsXP и не могу использовать Visual Studio 2012).
Для начала я создал проект с:
Файл -> Новый проект -> Visual C ++ -> Общие -> Makefile-Project

General:
Build Command Line: mingw32-make.exe
Rebuild All Command Line: mingw32-make.exe rebuild all
Clean Command Line: mingw32-make.exe clean all

IntelliSense:
Include Search Path: C:\MinGW\lib\gcc\mingw32\4.7.2\include\c++;C:\MinGW\include;
Assembly Search Path: C:\MinGW\lib\gcc\mingw32\4.7.2;C:\MinGW\lib;
Additional Arguments: -std=c++11

И я создал make-файл с содержанием:

all:
g++ -std=c++11 -pthread -o Makefile_Test.exe main.cpp

Он прекрасно компилируется, но в редакторе Visual Studios почти все подчеркнуто волнисто-красным. то есть

std::vector<std::thread> threads;

std::vector -> ‘Ошибка: у пространства имен std нет вектора-члена’

std::thread -> ‘Ошибка: у пространства имен std нет потока участника’

четное std::cout << "";

std::cout -> ‘Ошибка: в пространстве имен std нет члена cout’

Но я, конечно, включил соответствующие заголовки: и Visual Studio может даже найти их (поместите курсор на #include -> Ctrl + Shift + G, чтобы открыть заголовок). Моя папка MinGw выглядит следующим образом:

+ MinGW
|- bin
|- doc
|- include
|+ lib
|- gettext
|+ gcc
|+ mingw32
|+ 4.7.2
|- debug
|+ include
|- c++
|...
|- include-fixed
|- install-tools
|- libexec
|- mingw32
|- msys
|- share
|- var

Я также несколько раз пытался удалить файл sdf и позволить Visual Studio восстановить его с нуля — но все эти ошибки появились снова.

Есть идеи, что я здесь делаю не так?

4

Решение

Боюсь, вам придется отказаться от попыток исчезнуть эти красные загогулины если вы не отключите их полностью (так что, например, даже вызовы несуществующих функций не будут отмечены).

Причина в том, что Intellisense в Visual Studio использует отдельный интерфейс для компилятора EDG C ++ проанализировать вашу программу и, возможно, поставить красный закороченный текст под недопустимыми операторами или выражениями, и версия, используемая Intellisense в VS2010, (очевидно) не полностью совместима с C ++ 11.

Следовательно, переход на GCC 4.7.2 в качестве компилятора поможет построить ваши программы на C ++ 11, но не повлияет на поведение Intellisense.

Если вы хотите полностью отключить красные загогулины, вы можете сделать это, выбрав Инструменты -> Параметры -> Текстовый редактор -> C / C ++ -> Дополнительно и установив «Отключить загогулины» на «Истина».

9

Другие решения

Использование шаблона проекта Makefile, как описано в OP. Я смог получить ВК 2013 & Intellisense 2015 Community Edition работает, добавив надлежащие каталоги в свойствах проектов.

  1. Открой Project menu
  2. Выбрать {Project Name} Properties
  3. Открой Configuration Properties
  4. Выбрать VC++ Directories в древовидном меню
  5. Добавить каталоги в Includes Directories раздел

Вы должны добавить каталоги, которые содержат элементы, которые вы хотите прочитать в intellisense. Скажем, я работаю над проектом gtkmm, я бы также включил в него каталог glibmm, чтобы Glib :: ustrings не получал загадки. Даже если glibmm.h не включен непосредственно в мои исходные файлы.

1

По вопросам рекламы [email protected]