Я пытаюсь использовать Makefile в первый раз. Можно ли скомпилировать 2 разных c++ программы в 2 исполняемых файла, используя один Makefile?
Вот что я сделал до сих пор, но он только скомпилирует первый.
CFLAGS=-O3 -Wall
series : ./problem1/series.cpp
g++ $(CFLAGS) -o series ./problem1/series.cpp
gn : ./problem1/gn.cpp
g++ $(CFLAGS) -o gn ./problem1/gn.cpp
РЕДАКТИРОВАТЬ:
Как я могу остановить его от компиляции каждый раз (если я не изменю код)?
CFLAGS=-O3 -Wall
all : q1_series q1_gn q1_series_new_initial
q1_series : ./problem1/series.cpp
g++ $(CFLAGS) -o ./executables/q1_series ./problem1/series.cpp
q1_gn : ./problem1/gn.cpp
g++ $(CFLAGS) -o ./executables/q1_gn ./problem1/gn.cpp
q1_series_new_initial : ./problem1/series1.cpp
g++ $(CFLAGS) -o ./executables/q1_series_new_initial ./problem1/series1.cpp
echo "Question 1 created in ./executables"
По умолчанию при запуске make
make запускает правила для первой цели, которую видит. В вашем случае это будет цель series
.
Вы можете вручную запускать любую другую целевую (ые) целевую систему, указав их в командной строке, например, make gn
или make gn series
.
Если вы хотите сделать по умолчанию создание более первой цели, вы даете ей первую цель, которая делает то, что вы хотите.
Общее название для этой цели - all
. Таким образом, вы должны добавить all: series gn
до текущих целевых записей.
Вероятно, вы также захотите отметить эту цель как .PHONY: all
так, чтобы в случае, если какой-либо из all
файлов когда-либо был создан, make all
будет работать так, как вы ожидаете (и не пытайтесь проверить время модификации all
файла против его предпосылок и т.д.).
Да. Вы делаете "поддельную" цель, которая зависит от обеих других программ
all_programs : series gn