У меня есть следующие Makefile:Запуск исполняемого файла с входом с помощью Makefile
CC=g++
CFLAGS=-I.
tiling_file=blocking.cpp
sequential_file=sequential.cpp
n1 = 100
n2=7
n3=4
all: tiling sequential run
tiling:
$(CC) $(tiling_file) -fopenmp -o block
sequential:
$(CC) $(sequential_file) -fopenmp -o seq
run:
./block $(n1) $(n2) $(n3)
блок исполняемым принимает три входа (как указано n1, n2, n3) .Однако, когда я выполняю сделать, я получаю следующее ouput
g++ blocking.cpp -fopenmp -o block
g++ sequential.cpp -fopenmp -o seq
./block 100 7 4
Исполняемый файл не принимает входные данные, если только я не набираю 100 7 4 и не нажимаю enter. Как я могу запустить его?
Это может быть только мое мнение, но я не заинтересован в make-файлах, которые запускают их цели. Задача make - построить цель. Если вы хотите создать и запустить за один шаг, вы можете создать сценарий bash, который делает «make target && ./target p1 p2» и т. Д. – John
@Jonh Какая проблема решается? –
Это в основном семантика - цель make состоит в том, чтобы что-то строить, а цель скриптов - запускать вещи. Одно из предостережений от того, что я могу думать о моей голове, состоит в том, что среда в make может иметь некоторые неожиданные настройки (другая оболочка, чем вы ожидаете, другой путь и т. Д.). Это может привести к различным типам поведения при запуске из командной строки vs make. – John