如何在Windows中设置Makefile

时间:2018-08-21 21:06:59

标签: linux windows makefile cygwin

我尝试下载cygwin来运行我的makefile,但出现以下错误:

> make
FIND: formato del parametro non corretto
FIND: formato del parametro non corretto
g++  -o esempio
g++.exe: fatal error: no input files
compilation terminated.
makefile:12: recipe for target 'esempio' failed
make: *** [esempio] Error 1

这是我的基本makefile:

PHONY: all clean

CPPSOURCES += $(shell find . -name '*.cpp')

clean:
    rm esempio

all: esempio
    @true

esempio: $(CPPSOURCES)
    g++ $(CPPSOURCES) -o esempio

我该怎么办?

3 个答案:

答案 0 :(得分:2)

两件事对我来说看起来很不寻常。首先是这样:

CPPSOURCES += $(shell find . -name '*.cpp')

通常使用wildcard代替find。我将其更改为以下内容:

CPPSOURCES = $(sort $(wildcard *.cpp))
CPPOBJECTS = $(CPPSOURCES:.cpp=.o)

第二,对于您的esempio食谱,请使用CPPOBJECTS而不是CPPSOURCES

esempio: $(CPPOBJECTS)
    $(CXX) $(CXXFLAGS) $(CPPOBJECTS) -o esempio

在一个食谱中使用true看起来也很奇怪(但似乎可以使用)。您可以将其更改为以下内容,然后将其移至文件顶部,以使其成为默认配方:

.PHONY: all
all esempio: $(CPPOBJECTS)
    $(CXX) $(CXXFLAGS) $(CPPOBJECTS) -o esempio

Here是使用许多GNU附加功能的makefile的示例。

答案 1 :(得分:1)

您在PATH的cygwin bin目录之前有dos命令目录。 这是我的cygwin路径:

$ echo $PATH
$HOME/bin:/usr/local/bin:/usr/bin:/cygdrive/c/Go/bin:/bin

唯一的Windows目录是golang bin目录。使用cygpath查找cygwin等效目录名称。

最简单的方法是删除所有Windows目录,然后只添加所需的几个目录。为此,请修改您的用户环境变量以添加CYGWIN_NOWINPATH=1。在.bashrc中,您可以只为您真正需要的Windows目录添加cygwin等效项。

答案 2 :(得分:0)

它没有拾取任何文件。检查您是否在正确的目录中,并且从该目录运行 a b 0 5 10 1 4 9 2 3 8 3 2 7 4 1 6 5 0 5 命令会生成这些文件。如果没有,请解决该问题。

此外,通常认为删除程序的原始版本是 ,而不是在编译之后。