【问题标题】:How to setup makefile in windows如何在windows中设置makefile
【发布时间】:2018-08-21 21:06:58
【问题描述】:

我尝试下载 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

这是我的基本生成文件:

PHONY: all clean

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

clean:
    rm esempio

all: esempio
    @true

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

我能做些什么来解决它?

【问题讨论】:

  • FIND: 之类的错误消息表明(对我而言)它正在尝试运行 MS-Windows FIND,而不是 *nix find。编辑您的 Q 以显示从产生上述错误消息的同一终端窗口运行 echo $PATH 的输出。祝你好运。

标签: linux windows makefile cygwin


【解决方案1】:

在我看来,有两件事很不寻常。首先是这样的:

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 示例。

【讨论】:

  • 6.6 Appending More Text to Variables 上查看make 信息以了解+= 用法
  • 谢谢@matzeri。我收回了……我已经使用了运算符。我更新了答案以删除该声明。
  • 1. Ty 建议使用 .o 进行构建! 2.通配符不起作用 3.我找到了一个“解决方案”,重命名 cygwin find > find2 并使用 find2
【解决方案2】:

您在 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 等效项。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-02-28
    • 1970-01-01
    • 2016-06-27
    • 1970-01-01
    • 2013-06-14
    • 1970-01-01
    • 2015-11-26
    • 2012-03-06
    相关资源
    最近更新 更多