Здравствуйте!
Пишу свою утилиту с использованием CLang Tooling'а.
На одной машине — всё ока. При этом установлены MSVC2017/2019, при этом в системе есть переменные VS15CMNTOOLS/VS16CMNTOOLS.
На другой машине тулинг не может найти стандартные заголовки. MSVC2017/2019 — точно так же установлены. И системных переменных VS15CMNTOOLS/VS16CMNTOOLS нет. Немного поковырял этот вопрос — в инетах пишут, что установщики MSVC2017/2019 не устанавливают эти переменные. Но откуда они на первой машине? Руками я точно ничего не устанавливал.
Хорошо. Вставил в compile_flags.txt ключик '-v' — оно мне показало пути инклудов на машине, где всё работает:
| Скрытый текст |
| ...
D:\Qt\5.15.2\msvc2019\include
D:\Qt\5.15.2\msvc2019\include\QtCore
D:\Qt\5.15.2\msvc2019\include\QtWidgets
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\include
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\atlmfc\include
C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt
C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\shared
C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\um
C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\winrt
|
| |
Добавил аналогичные пути на второй машине в compile_flags.txt:
| Скрытый текст |
| ...
D:\Qt\5.15.2\msvc2019\include
D:\Qt\5.15.2\msvc2019\include\QtCore
D:\Qt\5.15.2\msvc2019\include\QtWidgets
E:\_github\invest-openapi-cpp-qt5-client-sdk\zulibs
E:\Program Files (x86)\Microsoft Visual Studio\2019\VC\Tools\MSVC\14.29.30133\include
E:\Program Files (x86)\Microsoft Visual Studio\2019\VC\Tools\MSVC\14.29.30133\atlmfc\include
C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt
C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\shared
C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\um
C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\winrt
End of search list.
In file included from
E:\projects\test\compile_flags_0.cpp:1:
E:\projects\test\_libs\test.h:7:10: fatal error: 'string' file not found
#include <string>
^~~~~~~~
|
| |
Почему он найти не может? Пути к стандартным хидерам те же, вижуалка этот проект собирает нормально
Хорошо. Попробовал подсунуть пути от вижуалки 2017. Теперь всё находит, на инклуды не ругается, но не понимает, что такое std::vector
| Скрытый текст |
| ...
D:\Qt\5.14.2\msvc2017\include
D:\Qt\5.14.2\msvc2017\include\QtCore
D:\Qt\5.14.2\msvc2017\include\QtWidgets
E:\_github\invest-openapi-cpp-qt5-client-sdk\zulibs
E:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\include
E:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\atlmfc\include
C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt
C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\shared
C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\um
C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\winrt
End of search list.
In file included from
E:\projects\test\compile_flags_0.cpp:1:
E:\projects\test\_libs\test.h:497:13:
error: no template named 'vector' in namespace 'std'
inline std::vector< std::basic_string< CharT, Traits, Allocator > >
~~~~~^
|
| |
В упор не пойму, что ему ещё надо для работы?
Ещё заметил, что он пытается добавить в пути поиска путь относительно экзешника моей тулзы:
ignoring nonexistent directory "f:\my-tool\lib\clang\13.0.1\include"
Есть сорцы CLang'а, есть само-собранный CLang. Что оттуда надо положить в "f:\my-tool\lib\clang\13.0.1\include", чтобы моя тулза нормально заработала?