Discussion on the problem of Makefile

Source: Internet
Author: User

Discover a pattern that is normally performed in the previous level Makefile: make -C xxx CFLAGS="$(CFLAGS)" , then the settings in the Xxx/makefile CFLAGS will not take effect.


Do an experiment.

To create a directory like this:

Content of Makefile:

Cflags=-i. /xxxall: @echo---top:cflags=$ (CFLAGS)---make-c sub cflags= "$ (CFLAGS)"

Content of Sub/makefile:

Cflags+=-l/usr/includeall: @echo---sub:cflags=$ (CFLAGS)---

We sub/makefile in the middle of the show CFLAGS .-L/usr/include
By understanding, the output of the sub/makefile should be: -I../xxx -L/usr/include , and the content of the implementation output is-I../xxx

Prove that the sub/makefile is CFLAGS+=-L/usr/include not effective at all.


Circumvention methods

What should we do then? Tried, and changed the Makefile to this:

Cflags=-i. /xxxexport cflagsall: @echo---top:cflags=$ (CFLAGS)---make-c Sub

You can use the Export keyword to pass the CFLAGS variable down.


Questions

Even if it is evaded, but what is the fundamental problem of this phenomenon? How to solve?


Discussion on the problem of Makefile

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.