c++ - Makefile会忽略命令export OMP_NUM_THREADS

我正在编译并使用带有以下makefile的openMP运行C++程序

all:        
            g++ -std=c++0x -O2 -fopenmp main.cpp body.cpp -o test
            export OMP_NUM_THREADS=4
            ./test

变量OMP_NUM_THREADS被忽略,而如果我在终端中手动给出三个命令(顺序相同),则该变量将被考虑在内,程序将以所需的节点数运行。从终端运行所有内容都会导致OMP_NUM_THREAD变量为之前手动设置的任何值。在程序本身中,该变量未更改,因此程序仅以可用节点数运行。

非常感谢您的帮助!

附言有人在链接/文档/视频上有关于Bash编程Nooby入门的好技巧吗?

最佳答案

将变量分配和导出指令从目标部分(“全部”)移动到定义部分,如下所示:

OMP_NUM_THREADS=4
export OMP_NUM_THREADS

all:        
            g++ -std=c++0x -O2 -fopenmp main.cpp body.cpp -o test
            ./test