Как сделать так, чтобы make-файл правильно распознал, включает в себя несколько каталогов - PullRequest
0 голосов
/ 19 июня 2020

Я не мог заставить мой make-файл правильно скомпилировать все мои исходные файлы из-за ошибки включения во время компиляции. Я просмотрел некоторые вопросы в Интернете, но решения, похоже, не исправляют мои.

Я могу скомпилировать эту программу, если у меня есть все исходные файлы в одном каталоге, но как только я попробовал разделить файлы в отдельные каталоги больше не работало.

Вот ошибка:

~/Documents/GitHub/testing$ make build
gcc -I/. -Wall main.c inplementation/inplementation.c -o program.exe

In file included from main.c:3:
./inplementation/inplementation.h:4:10: fatal error: 'module/module.h' file not found
\#include "module/module.h"

1 error generated.

In file included from inplementation/inplementation.c:1:
inplementation/inplementation.h:4:10: fatal error: 'module/module.h' file not found
\#include "module/module.h"
1 error generated.
make: *** [build] Error 1

Вот скриншот моей файловой директории:

file directory

Вот скриншот моих путей включения этого проекта: include paths

Здесь это снимок экрана моего файла make (в частности, сборки): build function in makefile

1 Ответ

0 голосов
/ 19 июня 2020

Вы используете #include "module/module.h", а флаг включения -I/$(TESTING_DIR)/module.

Прежде всего, я думаю, вы, вероятно, имели в виду -I$(TESTING_DIR)/module, иначе вы добавляете дополнительный sla sh перед путем, сохраненным в TESTING_DIR.

Но основная проблема в том, что module/module.h не существует в этой папке module. Итак, вам нужно выполнить одну из этих комбинаций:

  • -I$(TESTING_DIR)/module и #include "module.h"
  • -I$(TESTING_DIR) и #include "module/module.h"
...