【问题标题】:Cross compilation multilayer makefile交叉编译多层makefile
【发布时间】:2020-07-30 07:56:28
【问题描述】:

在交叉编译过程中,参数是如何从父makefile传递给子makefile的? 所有子模块可能不会在他们自己的 makefile 中使用整个工具链,而只是使用其中的某些部分。父级如何在其单独调用时将这些交叉编译器信息(例如 CC ranlib、ar 等)传递给子级 makefile。另外,我如何知道我使用的是 Cmake 还是 qmake。我对这个地区很熟悉。任何链接或代码 sn-ps 都可能会有所帮助。

【问题讨论】:

    标签: makefile cross-compiling embedded-linux gnu-make toolchain


    【解决方案1】:

    对于在 makefile 中设置的普通变量,例如 FOO = bar,它们根本不会传递给子 make。

    如果您将普通变量标记为导出(通过export FOO),那么它们将像任何其他环境变量一样传递给环境中的子制作。请注意,像FOO = baz 这样的子make 文件中的赋值将优先于从环境中获得的任何值。

    对于在命令行上设置的变量,例如make FOO=bar,它们通过特殊的MAKEFLAGS 变量向下传递,并且它们优先于子make 中设置的任何变量。

    不过,对于后者,请注意,当您调用子 make 时,您应该始终使用$(MAKE) 变量(或${MAKE},同样的东西)并且从不 使用像 make 这样的裸 make。

    请参阅recursive use of make 上的文档。

    【讨论】:

    • never 非常强大。而是明确了解他们在做什么。
    • 我想不出你为什么会使用make 而不是$(MAKE)
    • 因为我们的经验通常仅限于我们看到的案例。周围还有更多的案例,相信我,它们背后有理由。
    • 我见过很多案例。如果你有一个想法,我很感兴趣。否则,我将根据我(太多:() 年的经验继续推荐。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-13
    • 2019-01-08
    • 1970-01-01
    • 2011-08-24
    • 1970-01-01
    相关资源
    最近更新 更多