я настоятельно рекомендую вам начать обучение make
как это один из основных инструментов, которые используют программисты. И, если вы можете узнать C++
, вы можете научиться make
.
В вашем проекте у вас есть исходные файлы, зарытые в их собственных подкаталогах, поэтому, чтобы найти их все, вы можете использовать команду $(shell find...)
. То же самое с любыми заголовочными файлами в вашем проекте.
Делая all:
целевого прямого он запускается на выполнение, безусловно, и вы теряете преимущество использования make
- только компилировать, когда вы что-то изменить.
Сказав, что базовый шаблон, который я предоставляю здесь, можно улучшить, чтобы перекомпилировать только те исходные файлы, которые были изменены, но это упражнение для читателя.
Я думаю, что это должно работать в вашем случае:
# set non-optional compiler flags here
CXXFLAGS += -std=c++11 -Wall -Wextra -pedantic-errors
# set non-optional preprocessor flags here
# eg. project specific include directories
CPPFLAGS +=
# find cpp files in subdirectories
SOURCES := $(shell find . -name '*.cpp')
# find headers
HEADERS := $(shell find . -name '*.h')
OUTPUT := ttt
# Everything depends on the output
all: $(OUTPUT)
# The output depends on sources and headers
$(OUTPUT): $(SOURCES) $(HEADERS)
$(CXX) $(CXXFLAGS) $(CPPFLAGS) -o $(OUTPUT) $(SOURCES)
clean:
$(RM) $(OUTPUT)
Вам необходимо прочитать базовый учебник терминала командной строки Unix. Как вы думаете, какой ведущий символ '/' означает в пути? –
Вы не можете создать что-то с Make, пока не знаете, как его построить * без * Make. – Beta