为多个操作系统创建一个makefile,这个make(ext?)不起作用?

Posted

技术标签:

【中文标题】为多个操作系统创建一个makefile,这个make(ext?)不起作用?【英文标题】:Create a makefile for multiple OSes, this make (ext?) doesn't work? 【发布时间】:2008-11-20 20:59:13 【问题描述】:

我有一个使用 mingw32 构建的工作 makefile。现在我将该 makefile 重命名为 Makefile.w32 (source -> 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”行。

【问题讨论】:

【参考方案1】:

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

make -f Makefile.w32

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

all: mingw32

同样使用“clean”和“mingw32-clean”:

clean: mingw32-clean

【讨论】:

【参考方案2】:

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

【讨论】:

以上是关于为多个操作系统创建一个makefile,这个make(ext?)不起作用?的主要内容,如果未能解决你的问题,请参考以下文章

makefile工作方式

如何在makefile中使用cflow?

Make:变量赋值

无法使用makefile创建多个目录

Makefile相关知识

(Makefile 错误)多个定义错误