【发布时间】:2019-06-03 07:58:39
【问题描述】:
我想通过将不同的参数传递给#define 变量,通过Makefile 多次编译C 代码。我应该把我的菜鸟手放在哪里?
在我的 C 代码中,我有一个矩阵尺寸的大小定义
#define N 500
我想在一个循环中多次编译它,但我不知道如何通过
-DN=(different sizes)
在 Makefile 中。
作业的结构如下: 1.打扫干净 2. 使用-DN=确定大小 3. 运行性能测试并获取结果 4. 以不同的尺寸重复。
我的 Makefile 现在看起来像这样:
exe_name = exe
CC = gcc
CFLAGS = -g -O2 -ggdb
LDFLAGS = -lm -L. -Wall -Wextra
OMPFLAGS = -fopenmp
OBJS = ompmatmul.o
default: $(exe_name)
$(exe_name): $(OBJS)
$(CC) -o $@ $^ $(LDFLAGS) $(OMPFLAGS)
%.o: %.c
$(CC) -c $< -o $@ $(CFLAGS) $(OMPFLAGS)
clean:
rm -f $(OBJS) $(exe_name) *~
.PHONY: clean #Don't look for a file named 'clean'
虽然我将在其中插入 make 的循环如下:
for size in $(seq 500 500 3000); do
make clean
make #define_new_size
#do_performance_and_acquire_results
done
【问题讨论】:
-
也许我不清楚,对此感到抱歉:我想知道我是否可以通过使用 N=500 的 Makefile 来更改(尤其是如何)#define N 的大小, 1000,1500,..,3000 在我的 bash 作业的单次运行中,因此避免调整参数并为每个 N 重新编译。
-
so
make size=$size然后 gcc 命令采用-DN=$(size)