Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/windows-phone-8/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Makefile 没有制定目标的规则';openmp';?_Makefile_Openmp_Options_Compiler Flags - Fatal编程技术网

Makefile 没有制定目标的规则';openmp';?

Makefile 没有制定目标的规则';openmp';?,makefile,openmp,options,compiler-flags,Makefile,Openmp,Options,Compiler Flags,在makefile中定义了以下内容: CXX = g++ CXXFLAGS = -std=c++11 我想用OpenMP指令编译我的代码,而不改变原始的makefile(它运行得很好)。该手册建议了一种方法,即在命令行中对其进行更改。但是我跑的时候, make CXXFLAGS=-std=c++11 -fopenmp 弹出前面提到的错误。有人能帮我理解我做错了什么吗 太空——最后的前沿。您需要引用中的 make CXXFLAGS="-std=c++11 -fopenmp" shell在由

在makefile中定义了以下内容:

CXX = g++
CXXFLAGS = -std=c++11
我想用OpenMP指令编译我的代码,而不改变原始的makefile(它运行得很好)。该手册建议了一种方法,即在命令行中对其进行更改。但是我跑的时候,

 make CXXFLAGS=-std=c++11 -fopenmp

弹出前面提到的错误。有人能帮我理解我做错了什么吗

太空——最后的前沿。您需要引用中的

make CXXFLAGS="-std=c++11 -fopenmp"

shell在由空格分隔的单词边界处拆分命令行单词。引用用于避免分词。

这里的问题是
-std=c++11
-fopenmp
之间的空格。它将这两个参数分割开来,
-fopenmp
被解释为选项
-f
,然后
openmp
被解释为一个
makefile
,该
make
试图构建,因为它在当前目录中找不到它

您需要执行带有引号(
)的
make
,如

$make cxflags=“-std=c++11-fopenmp”
这将把
cxflags=-std=c++11-fopenmp
传递到
make
。我们可以通过以下简单的
makefile
看到这种行为

CXX = g++
CXXFLAGS = -std=c++11

all:
    @echo $(CXXFLAGS)
运行
make
将生成输出

$make
-std=c++11
运行
make cxflags=“-std=c++11-fopenmp”
将产生

$make
-std=c++11-fopenmp
正确的输出和我们希望达到的目标


除了命令,
makecxflags=-std=c++11-fopenmp
,您的问题中应该会产生更多的错误

make:openmp:没有这样的文件或目录
生成:**没有规则将目标设置为“openmp”。停止。
由于
cxflags=
-std=c++11
之间的空格,我得到了

$make cxflags=-std=c++11-fopenmp
make:无效选项--=
make:无效选项--c
make:无效选项--+
make:无效选项--+
make:无效选项--1
make:无效选项--1
例如,如果您希望使用
-std=c++14
而不是
-std=c++11
进行编译,则需要使用执行
make

$make cxflags=-std=c++14
注意:无空格,或与

$make cxflags=“-std=c++14”

同样没有空格。

谢谢!将其写成字符串非常有效!问题中CXXFLAGS后面的空格是一个拼写错误,我已经更正了!:)不用麻烦,很乐意帮忙。