1

我有一个使用 mingw32 构建的工作 makefile。现在我将该makefile重命名为Makefile.w32(来源-> http://pastie.org/319964

现在我有一个带有以下内容的 Makefile。问题是,它没有构建我的源

all:
    make mingw32

clean:
    @echo "causes an infinite loop -> make mingw32 clean"

mingw32:
    @echo "yeahhhhhhhhh"
    make Makefile.w32

mingw32-clean:
    @echo "mingw clean"
    make Makefile.w32 clean

结果:

> "make" 
make mingw32
make[1]: Entering directory `/c/nightly/test'
yeahhhhhhhhh
make Makefile.w32
make[2]: Entering directory `/c/nightly/test'
make[2]: Nothing to be done for `Makefile.w32'.
make[2]: Leaving directory `/c/nightly/test'
make[1]: Leaving directory `/c/nightly/test'

在我看来,它不喜欢 Makefile.w32 扩展名。我不明白为什么它没有建立。它很明显进入了我的“make Makefile.w32”行。

4

2 回答 2

3

“make Makefile.w32”正在寻找名为 Makefile.w32 的目标,而不是该名称的 make 文件。要运行 make 并告诉它读取 make 文件“Makefile.w32”,请使用 -f 开关:

make -f Makefile.w32

编辑:顺便说一句,如果你想要的只是让“all”依赖于同一个make文件中的“mingw32”目标,为什么要在“all”目标中启动一个单独的make实例?恕我直言,最好将其声明为依赖目标:

all: mingw32

与 "clean" 和 "mingw32-clean" 类似:

clean: mingw32-clean
于 2008-11-20T21:06:01.183 回答
0

您可以使用cmake生成 makefile。它应该适用于大多数平台。

于 2008-11-20T21:07:34.317 回答