加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

传递参数以进行更改#define变量[复制]

发布时间:2020-12-16 09:22:39 所属栏目:百科 来源:网络整理
导读:参见英文答案 Passing additional variables from command line to make????????????????????????????????????7个 我想通过将不同的参数传递给#define变量,通过Makefile多次编译C代码.我应该把我的诺贝克手放在哪里? 在我的C代码中,我有一个矩阵’尺寸的大
参见英文答案 > Passing additional variables from command line to make????????????????????????????????????7个
我想通过将不同的参数传递给#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)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读