Установлено следующее:
- Visual Studio Code (1.45.1)
- Visual Studio 2019 Community (для использования компилятора MSV C
cl.exe
) - Qt 5.15.0 (установлен в C: \ Qt)
Код Visual Studio был запущен после запуска Visual Studio Command Prompt
, поэтому среда установлена правильно для cl.exe
. Расширение ms-vscode.cpptools
было установлено в Visual Studio Code, а includePath
имеет значение:
"includePath": [
"${workspaceFolder}/**",
"${INCLUDE}",
"C:/Qt/5.15.0/msvc2019_64/include/**"
],
Этот файл hw.cpp
компилируется и работает нормально:
#include <iostream>
int main()
{
std::cout << "Hello world!";
return 0;
}
Команда в tasks.json
используется:
"command": "cl.exe",
"args": [
"/Zi",
"/EHsc",
"/Fe:",
"${fileDirname}\\${fileBasenameNoExtension}.exe",
"${file}"
],
В качестве альтернативы, из встроенного Терминала внутри кода Visual Studio, команда «cl / EHs c / MD / O2 hw. cpp / link / out: hw.exe "компилирует все правильно, и hw.exe
может быть выполнен.
Но когда я пытаюсь использовать Qt следующим образом, он не компилируется:
#include <QString>
int main()
{
QString test("Hello world!");
qDebug() << test;
return 0;
}
Компилятор сообщает" фатальная ошибка C1083: не удается открыть включаемый файл: «QString»: нет такого файла или каталога ». IntelliSense находит QString.h, который открывается, когда я нажимаю Ctrl и нажимаю QString
(вверху).
Что мне не хватает?
ОБНОВЛЕНИЕ
Благодаря комментариям от @ rioV8, я исследовал /link
варианты для cl.exe
. Аргументы задачи были обновлены до:
"args": [
"/EHsc",
"/MD",
"/O2",
"/IC:\\Qt\\5.15.0\\msvc2019_64\\include",
"/IC:\\Qt\\5.15.0\\msvc2019_64\\include\\QtCore",
"${file}",
"/link",
"/LIBPATH:C:\\Qt\\5.15.0\\msvc2019_64\\lib",
"Qt5Core.lib",
"qtmain.lib",
"/OUT:${fileDirname}\\${fileBasenameNoExtension}.exe"
],
Это немного улучшило ситуацию. hw.cpp
теперь компилируется и генерирует hw.obj
, но теперь я получаю ошибки компоновщика (по одной для каждого .lib
):
warning LNK4272: library machine type 'x64' conflicts with target machine type 'x86'
За этим следует fatal error LNK1120: 2 unresolved externals
.
Получение ближе, но все еще не связывается.