Makefile с несколькими подкаталогами - PullRequest
1 голос
/ 04 августа 2020

Есть ли у нас эффективный способ включения всех подкаталогов в Makefile вместо включения каждого каталога с параметром -I?

Например, ниже представлена ​​моя структура каталогов, где исходный код и заголовки распределены по разным подкаталогам . У меня нет Make-файлов в подкаталогах, а только один верхний Makefile.

|--> SRC 

     |--> scripts 
           |--- **Makefile**
     |--> lib
           |------*.c
           |------*.h
           |----> subdir
                   |------*.c
     |--> tests
           |---> block1
                  |------*.c                  
           |---> block2
                  |------*.c                
           |---> block3
                  |------*.c
                  |------*.h

1 Ответ

0 голосов
/ 04 августа 2020

Требуется автоматическое создание опции '-I' - по одной для каждой папки, содержащей файл заголовка '.h'. Если глубина дерева известна, можно использовать функцию wildcard. Если глубина дерева неизвестна (или очень велика), можно использовать команду «find».

Приведенный ниже код относится к Makefile верхнего уровня. Это означает, что Makefile существует в папке верхнего уровня, но показывает Makefile в подпапке scripts

# Assuming max 2 level of header files
INC_LIST := $(addprefix -I, $(sort $(dir $(wildcard */*.h */*/*.h))))

Для случая неограниченной глубины используйте find

INC_LIST = $(addprefix -I, $(sort $(dir $(shell find . -name '*.h'))))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...