Переопределить Включить (Удалить Путь) - PullRequest
0 голосов
/ 10 марта 2020

Имеется библиотека, которую я скачал и которая включает в себя следующее:

#include <http-parser/http_parser.h>

Они предоставляют для нее собственную библиотеку, которая находится в папке http_parser.

ESP-IDF включают http_parser.h. Если я изменю #include на #include <http_parser.h>, он скомпилируется.

Мне любопытно - можно ли это сделать с помощью системы Make или CMake без необходимости редактировать исходный файл. c?

1 Ответ

0 голосов
/ 12 марта 2020

Если вы не можете / не хотите исправлять исходный файл, вы можете манипулировать структурой каталогов для соответствия, например:

$ cat Makefile
CPPFLAGS = -I.

test: test.o

test.o: http_parser/http_parser.h

http_parser/%.h : %.h
        mkdir -p $(@D)
        ln -sfr $< $(@D)

Это создаст запрошенную папку и создаст символ c ссылка на существующий файл, который позволит продолжить компиляцию:

$ cat test.c
#include <http_parser/http_parser.h>

int main(int argc, char *argv[])
{
  return 0;
}

$ make
mkdir -p http_parser
ln -sfr http_parser.h http_parser
cc  -I.  -c -o test.o test.c
cc   test.o   -o test

$ ls -l http_parser
lrwxrwxrwx 1 raspy raspy 16 Mar 11 22:29 http_parser.h -> ../http_parser.h
...