Последнее вызывает проблемы при компиляции на разных ОС (в моем случае Linux и Termux (на моем мобильном телефоне)) поскольку абсолютные (системные) пути явно разные.
Например, вместо
Код: Выделить всё
#include "Header.h"Код: Выделить всё
#include "/home/user/path/to/the/Header.h"Кто-нибудь знает, есть ли возможность отключить это поведение и заставить его опустить путь?
Я пытался поискать в Google, но, к сожалению, ничего не нашел...
Заранее спасибо
Изменить: минимальный пример
Структура:
Код: Выделить всё
./
- .clangd
- compile_commands.json
- bin/
- build/
- include/
--- Header.h
--- Subheader.h
- src/
--- main.cpp`
Код: Выделить всё
// .clangd
Diagnostics:
UnusedIncludes: Strict
MissingIncludes: Strict
Код: Выделить всё
// Subheader.h
#ifndef IG20240815185417
#define IG20240815185417
struct Subheader {
int i{2};
};
#endif
Код: Выделить всё
// Header.h
#ifndef IG20240520170135
#define IG20240520170135
#include "Subheader.h"
struct Header {
Subheader sh{};
};
#endif
Код: Выделить всё
// main.cpp
#include "Header.h"
int main() {
Header h{};
Subheader sh{};
return 0;
}
Код: Выделить всё
clang++ -o build/main.o -c src/main.cpp -MJ build/main.o.json -I./include && clang++ -o bin/main.exe build/main.o && sed -e '1s/^/[\n/' -e '$s/,$/\n]/' build/*.o.json > compile_commands.json
Компилировать команду (без создания compile_commands.json):
Код: Выделить всё
clang++ -o build/main.o -c src/main.cpp -I./include && clang++ -o bin/main.exe build/main.o
Код: Выделить всё
// compile_commands.json
[
{ "directory": "/ABSOLUTE/PATH/TO/WORKING/DIRECTORY", "file": "src/main.cpp", "output": "build/main.o", "arguments": ["/usr/bin/clang++", "-xc++", "src/main.cpp", "-o", "build/main.o", "--driver-mode=g++", "-c", "-I", "./include", "--target=x86_64-pc-linux-gnu"]}
]
При просмотре main.cpp (в VSCode) под подзаголовком отображается синяя волнистая линия, намекая, что соответствующий заголовок отсутствует/не включен напрямую (но известен через Header.h).
При выборе опции QuickFix добавляется директива include следующим образом:
Код: Выделить всё
#include "/path/to/working/directory/include/Subheader.h"Подробнее здесь: https://stackoverflow.com/questions/788 ... thout-path
Мобильная версия