Я пытаюсь заставить 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 восстановить его с нуля — но все эти ошибки появились снова.
Есть идеи, что я здесь делаю не так?
Боюсь, вам придется отказаться от попыток исчезнуть эти красные загогулины если вы не отключите их полностью (так что, например, даже вызовы несуществующих функций не будут отмечены).
Причина в том, что Intellisense в Visual Studio использует отдельный интерфейс для компилятора EDG C ++ проанализировать вашу программу и, возможно, поставить красный закороченный текст под недопустимыми операторами или выражениями, и версия, используемая Intellisense в VS2010, (очевидно) не полностью совместима с C ++ 11.
Следовательно, переход на GCC 4.7.2 в качестве компилятора поможет построить ваши программы на C ++ 11, но не повлияет на поведение Intellisense.
Если вы хотите полностью отключить красные загогулины, вы можете сделать это, выбрав Инструменты -> Параметры -> Текстовый редактор -> C / C ++ -> Дополнительно и установив «Отключить загогулины» на «Истина».
Использование шаблона проекта Makefile, как описано в OP. Я смог получить ВК 2013 & Intellisense 2015 Community Edition работает, добавив надлежащие каталоги в свойствах проектов.
Project menu
{Project Name} Properties
Configuration Properties
VC++ Directories
в древовидном менюIncludes Directories
разделВы должны добавить каталоги, которые содержат элементы, которые вы хотите прочитать в intellisense. Скажем, я работаю над проектом gtkmm, я бы также включил в него каталог glibmm, чтобы Glib :: ustrings не получал загадки. Даже если glibmm.h не включен непосредственно в мои исходные файлы.