Относительные пути включаемых каталогов в опции -I компилятора gcc

Дерево проекта имеет структуру

/path/src/test.c
/path/include/test.h

Файл test.c начинается с

#include "test.h"

Так собирается

gcc -I/path/include /path/src/test.c

и так тоже

gcc -I../include test.c

но только если перейти в каталог, где лежит .с файл.

То есть директива -I../include работает относительно каталога, в котором запущен компилятор.

Прочитал в какой-то ссылке, что есть способ чтобы пути вычислялись относительно каталога исходного файла test.c - но не могу найти как это сделать. Есть такая возможность или нет?

Про способ написать внутри файла

#include "../include/test.h"

понятно, но в данном случае не подходит.

Имя файла указывать не надо, это каталог.

Да, блин, сорри, это я опечатался.
Конечно не надо.
Сейчас поправлю в вопросе

поактивнее, товарищи! Вопрос-то простенький, в разделе для новичков…

А как оно так собирается, если пути разные? (Это для активности :slight_smile: )

В PHP есть переменная, типа _ FILE _ - это полный путь к файлу скрипта, из него можно путь к каталогу с файлом получить.

В первом случае собирается независимо от того, где запускаешь эту строчку - потому что пути абсолютные. Во втором - только если запускать и каталога, где лежит исходник.
В первом сообщении это указано.

Странно, ведь если из каталога include выйти выше, то чтобы получить доступ к test.c нужно еще войти в папку src, так?

под /path имеется в виду полный абсолютный путь, видите он начинается со слеша? - так что никуда входить -выходить не надо

Сложно понять чего хотелось бы. Выделенное, разве не это? Запускаешь компилятор из папки с исходником и всё. Если хочется с любого места, тогда полные пути где то нужно указать.

хочется с любого места, а пути чтоб относительные :slight_smile:

Тогда в переменной окружения указываешь папку с исходником, в которой уже должен находиться (создан) пакетный файл с запуском помпилера.

у меня в дереве исходников сотня таких папок… 1912 файлов… мне надо относительные пути…

Похоже других вариантов, кроме прикручивания Make - не остается

Относительно чего? Если только относительно корня.)
Makefile тоже должен находиться с исходником (или где-то рядом),
Примеры покажи откуда планируешь запускать компиляцию.

Суть от этого не поменялась. Или пути поменялись?

Слушайте, откройте консоль и запустите мои примеры, если останутся вопросы, тогда спросите

Это же линукс? Нет его сейчас. Но интерес с путями (лично для меня) остаётся. Видимо если «так можно», то где-то кто-то когда-то пути еще пишет?

Я, честно, не понимаю ваших вопросов. Там вроде с путями очевидно все

Всё, я понял пока много писал. Ты находишься в каталоге src. Относительно него и относительные пути. Затупил.