2015-08-09 97 views
0

我想知道我使用的推断规则有什么错我的makefile:推断规则

nvcc=/usr/local/cuda-6.5/bin/nvcc 
opts="-O3 -arch=sm_35 -rdc=true -lcudadevrt -Xcompiler -fopenmp -lpng" 

base: ignore dynamic predict 

%: ./../source/%.cu 
    $(nvcc) $> $(opts) -o [email protected] 

的错误,我得到:

make: *** No rule to make target `ignore.exe', needed by `base'. Stop. 

当然没有这样的一个规则,但不应该make假设ignore隐藏在%

回答

1

首先,你的错误信息与你的makefile不匹配(你的makefile中没有任何地方是提到的目标ignore.exe)。这让我非常谨慎,可能在您正在运行的内容与您向我们展示的内容之间存在其他相关差异。

无论如何,像%: ./../source/%.cu这样的规则将与目标相匹配,当且仅当存在与模式匹配的先决条件时。所以如果你的目标是ignore.exe而目标模式是%这意味着前提条件中的%也会扩展到ignore.exe。所以make会寻找先决条件./../source/ignore.exe.cu。如果该文件存在(或可以自己制作),则make将尝试构建目标。如果它不存在并且不能创建,那么make会忽略该规则并继续寻找更多可能与目标相匹配的规则以及存在或可以构建前提条件的规则。

如果没有找到,那么你得到你所看到的错误(没有规则,使目标

+0

什么跑,什么被证明是在'.exe'扩展之间的唯一区别。 –

+0

是的,实际上我的文件被命名为'mandelbrot-ignore.cu'而不是'ignore.cu'。 –