参见英文答案 Passing additional variables from command line to make7个 我想通过将不同的参数传递给#define变量,通过Makefile多次编译C代码.我应该把我的诺贝克手放在哪里? 在我的C代码中,我有一个
我想通过将不同的参数传递给#define变量,通过Makefile多次编译C代码.我应该把我的诺贝克手放在哪里?
在我的C代码中,我有一个矩阵’尺寸的大小定义
#define N 500
我想在循环中多次编译它,但我无法理解如何通过它
-DN=(different sizes)
在Makefile里面.
该工作的结构如下:
干净
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要将参数传递给make文件,请添加如下参数:
make N=500
然后你的makefile将包含:
ifndef N # provide a default N=500 endif ... $(exe_name): $(OBJS) $(CC) -DN=$(N) -o $@ $^ $(LDFLAGS) $(OMPFLAGS)