【问题标题】:Create a makefile for multiple OSes, this make (ext?) doesn't work?为多个操作系统创建一个makefile,这个make(ext?)不起作用?
【发布时间】: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”行。

【问题讨论】:

    标签: makefile multiple-makefiles


    【解决方案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。它应该适用于大多数平台。

      【讨论】:

        猜你喜欢
        • 2015-08-09
        • 1970-01-01
        • 2017-08-06
        • 1970-01-01
        • 2022-10-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多