交叉编译多层makefile

Cross compilation multilayer makefile

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

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

如果您将普通变量标记为已导出(通过 export FOO),那么它们将像任何其他环境变量一样被传递到环境中的 submake。请注意,submake makefile 中的赋值,如 FOO = baz 将优先于从环境中获得的任何值。

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

但是,对于后者,请注意,当您调用子 make 时,您应该 始终 使用 $(MAKE) 变量(或 ${MAKE},同样的事情)和 nevermake.

一样使用 bare make

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