Я хочу автоматически генерировать Makefile с помощью исполняемых целей C ++, используя только информацию #include в исходных файлах. Цель состоит в том, чтобы устранить избыточность между исходными зависимостями и ручными объявлениями Makefile
Пример
Код: Выделить всё
project/
├── exec.cpp
├── util.hpp
├── Makemakefile
< /code>
📄 exec.cpp < /p>
#include "util.hpp"
#include
int main() {
std::cout
📄 util. < /p>
#include "util.hpp"
int add(int a, int b) {
return a + b;
}
< /code>
📄 И я хочу, чтобы этот Makefil был сгенерирован: < /p>
Примечание: вкладки могут появиться в виде пространств в фрагменте Makefile ниже. Обязательно используйте реальные символы вкладок для командных строк при копировании < /p>
# Makefile generated by MakeMakefile (Copyright J. Saint-Martin)
CXX = g++
CXXFLAGS = -Wall -Wextra -std=c++17 -MMD -MP
all: \
exec
exec: exec.o \
util.o
$(CXX) $(CXXFLAGS) $^ -o $@
%.o: %.cpp
$(CXX) $(CXXFLAGS) -c $< -o $@
clean:
rm -f exec
rm -f *.o *.d
help:
@echo "Target available : all, clean, help, exec"
(это относится к предложенному вопросу: «Могу ли я скомпилировать все файлы .cpp в src/to .o's in obj/, затем ссылаться на бинарное значение в ./? Мой вопрос отличается: я предлагаю общий и многоразовый сценарий (makemakefile), который динамически генерирует создание на основе конвенций проекта. Он обеспечивает минимальные и полные зависимости, анализируя директивы #include, не полагаясь на внешние инструменты, такие как GCC -M или MakeDepend. Мой подход не зависит от макета каталогов и фокусируется на логике зависимости, а не только на размещении файлов.
Отказ от ответственности разработчика
Если вы собираетесь прокомментировать, убедитесь, что вы прочитали прошлую основную часть
Подробнее здесь: https://stackoverflow.com/questions/797 ... in-c-sourc
Мобильная версия