g ++的makemp for openmp ----它无法正常工作

时间:2015-02-18 22:56:30

标签: makefile g++ openmp

我想为我的代码使用一个makefile,它将使用openmp。我的源文件经过编译和链接,没有任何错误。但是当我运行它时,它只使用一个处理器,即使我通过例如导出OMP_NUM_THREADS = 2来调整它们的数量。

makefile如下所示。如果有人能帮助我,我将不胜感激。

最佳

CPP_FILES := $(wildcard src/*.cpp)
OBJ_FILES := $(addprefix obj/,$(notdir $(CPP_FILES:.cpp=.o)))

CC = g++
DEBUG = -g

INTEL=icc
ifeq ($(notdir $(CC)),$(INTEL))
CCFLAGS=-openmp -lm -lstdc++
else
CCFLAGS=-fopenmp -lm -lstdc++
endif

LD_FLAGS :=-fopenmp -Wall $(DEBUG)
#CC_FLAGS := -Wall -c $(DEBUG)


MAIN: $(OBJ_FILES)
	$(CC) $(LD_FLAGS) -o $@ $^

obj/%.o: src/%.cpp
	$(CC) $(CC_FLAGS) -c -o $@ $<

.PHONY: clean

clean:
	rm -f $(OBJ_FILES) *.o

1 个答案:

答案 0 :(得分:0)

您定义的变量CCFLAGS与您在实际编译规则中使用CC_FLAGS的变量不匹配。当您清理并运行make时,编译行是否实际显示您设置的标志被传递?我希望他们不应该这样做,除非你在这里的代码不是你正在运行的代码的直接副本。

为了便于调试,您是否可以复制并粘贴显示编译和链接的终端记录?