Make: How pre-requs are creating automatically?












0















I am new to make. I am trying to debug some issue. For that i kept some debug statements to know all pre-reqs of particular target.



Eg:



$(TARGET_BUILD)/%.o: $(TARGET_BUILD)/%.c
$(info pre-res for this target $^)
$(c_dependency)


After completion of the build. When i check the build log i can see there are several '.h' files listed in prerequisites. From the above target we mentioned only '.c' ($(TARGET_BUILD)/%.c) files as pre-reqs right? Then how come it is showing header files in pre-reqs. Are they auto generated? If yes, Can you please help me how they are created automatically.



FYI, $(c_dependency) is a define directive which has below lines defined :



mkdir -p $(@D)

$(CC64) -o $(@) -c $(CFLAGS64) $<









share|improve this question

























  • You probably have other rules without recipe, elsewhere in this Makefile or in another Makefile included by this one, that declare header files as prerequisites of object files.

    – Renaud Pacalet
    Nov 23 '18 at 7:03











  • Yeah,Seems like. But there are lot of make files in this vast project. Is there a way to know from where that rule is hitting ? I mean from which make file its hitting?

    – santosh
    Nov 23 '18 at 7:07











  • find and grep? But beware, some of these included Makefiles may be generated by make itself; before searching them you will have to make sure that they exist already. Moreover, make can also generate dependencies dynamically (using the $(eval...) function); if it is the case searching files will probably not work. You could also use the --debug=v make option to see what makefiles are parsed.

    – Renaud Pacalet
    Nov 23 '18 at 7:47


















0















I am new to make. I am trying to debug some issue. For that i kept some debug statements to know all pre-reqs of particular target.



Eg:



$(TARGET_BUILD)/%.o: $(TARGET_BUILD)/%.c
$(info pre-res for this target $^)
$(c_dependency)


After completion of the build. When i check the build log i can see there are several '.h' files listed in prerequisites. From the above target we mentioned only '.c' ($(TARGET_BUILD)/%.c) files as pre-reqs right? Then how come it is showing header files in pre-reqs. Are they auto generated? If yes, Can you please help me how they are created automatically.



FYI, $(c_dependency) is a define directive which has below lines defined :



mkdir -p $(@D)

$(CC64) -o $(@) -c $(CFLAGS64) $<









share|improve this question

























  • You probably have other rules without recipe, elsewhere in this Makefile or in another Makefile included by this one, that declare header files as prerequisites of object files.

    – Renaud Pacalet
    Nov 23 '18 at 7:03











  • Yeah,Seems like. But there are lot of make files in this vast project. Is there a way to know from where that rule is hitting ? I mean from which make file its hitting?

    – santosh
    Nov 23 '18 at 7:07











  • find and grep? But beware, some of these included Makefiles may be generated by make itself; before searching them you will have to make sure that they exist already. Moreover, make can also generate dependencies dynamically (using the $(eval...) function); if it is the case searching files will probably not work. You could also use the --debug=v make option to see what makefiles are parsed.

    – Renaud Pacalet
    Nov 23 '18 at 7:47
















0












0








0








I am new to make. I am trying to debug some issue. For that i kept some debug statements to know all pre-reqs of particular target.



Eg:



$(TARGET_BUILD)/%.o: $(TARGET_BUILD)/%.c
$(info pre-res for this target $^)
$(c_dependency)


After completion of the build. When i check the build log i can see there are several '.h' files listed in prerequisites. From the above target we mentioned only '.c' ($(TARGET_BUILD)/%.c) files as pre-reqs right? Then how come it is showing header files in pre-reqs. Are they auto generated? If yes, Can you please help me how they are created automatically.



FYI, $(c_dependency) is a define directive which has below lines defined :



mkdir -p $(@D)

$(CC64) -o $(@) -c $(CFLAGS64) $<









share|improve this question
















I am new to make. I am trying to debug some issue. For that i kept some debug statements to know all pre-reqs of particular target.



Eg:



$(TARGET_BUILD)/%.o: $(TARGET_BUILD)/%.c
$(info pre-res for this target $^)
$(c_dependency)


After completion of the build. When i check the build log i can see there are several '.h' files listed in prerequisites. From the above target we mentioned only '.c' ($(TARGET_BUILD)/%.c) files as pre-reqs right? Then how come it is showing header files in pre-reqs. Are they auto generated? If yes, Can you please help me how they are created automatically.



FYI, $(c_dependency) is a define directive which has below lines defined :



mkdir -p $(@D)

$(CC64) -o $(@) -c $(CFLAGS64) $<






makefile gnu-make






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Nov 23 '18 at 7:35







santosh

















asked Nov 23 '18 at 6:47









santoshsantosh

495




495













  • You probably have other rules without recipe, elsewhere in this Makefile or in another Makefile included by this one, that declare header files as prerequisites of object files.

    – Renaud Pacalet
    Nov 23 '18 at 7:03











  • Yeah,Seems like. But there are lot of make files in this vast project. Is there a way to know from where that rule is hitting ? I mean from which make file its hitting?

    – santosh
    Nov 23 '18 at 7:07











  • find and grep? But beware, some of these included Makefiles may be generated by make itself; before searching them you will have to make sure that they exist already. Moreover, make can also generate dependencies dynamically (using the $(eval...) function); if it is the case searching files will probably not work. You could also use the --debug=v make option to see what makefiles are parsed.

    – Renaud Pacalet
    Nov 23 '18 at 7:47





















  • You probably have other rules without recipe, elsewhere in this Makefile or in another Makefile included by this one, that declare header files as prerequisites of object files.

    – Renaud Pacalet
    Nov 23 '18 at 7:03











  • Yeah,Seems like. But there are lot of make files in this vast project. Is there a way to know from where that rule is hitting ? I mean from which make file its hitting?

    – santosh
    Nov 23 '18 at 7:07











  • find and grep? But beware, some of these included Makefiles may be generated by make itself; before searching them you will have to make sure that they exist already. Moreover, make can also generate dependencies dynamically (using the $(eval...) function); if it is the case searching files will probably not work. You could also use the --debug=v make option to see what makefiles are parsed.

    – Renaud Pacalet
    Nov 23 '18 at 7:47



















You probably have other rules without recipe, elsewhere in this Makefile or in another Makefile included by this one, that declare header files as prerequisites of object files.

– Renaud Pacalet
Nov 23 '18 at 7:03





You probably have other rules without recipe, elsewhere in this Makefile or in another Makefile included by this one, that declare header files as prerequisites of object files.

– Renaud Pacalet
Nov 23 '18 at 7:03













Yeah,Seems like. But there are lot of make files in this vast project. Is there a way to know from where that rule is hitting ? I mean from which make file its hitting?

– santosh
Nov 23 '18 at 7:07





Yeah,Seems like. But there are lot of make files in this vast project. Is there a way to know from where that rule is hitting ? I mean from which make file its hitting?

– santosh
Nov 23 '18 at 7:07













find and grep? But beware, some of these included Makefiles may be generated by make itself; before searching them you will have to make sure that they exist already. Moreover, make can also generate dependencies dynamically (using the $(eval...) function); if it is the case searching files will probably not work. You could also use the --debug=v make option to see what makefiles are parsed.

– Renaud Pacalet
Nov 23 '18 at 7:47







find and grep? But beware, some of these included Makefiles may be generated by make itself; before searching them you will have to make sure that they exist already. Moreover, make can also generate dependencies dynamically (using the $(eval...) function); if it is the case searching files will probably not work. You could also use the --debug=v make option to see what makefiles are parsed.

– Renaud Pacalet
Nov 23 '18 at 7:47














0






active

oldest

votes











Your Answer






StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");

StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);

StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});

function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});


}
});














draft saved

draft discarded


















StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53441843%2fmake-how-pre-requs-are-creating-automatically%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown

























0






active

oldest

votes








0






active

oldest

votes









active

oldest

votes






active

oldest

votes
















draft saved

draft discarded




















































Thanks for contributing an answer to Stack Overflow!


  • Please be sure to answer the question. Provide details and share your research!

But avoid



  • Asking for help, clarification, or responding to other answers.

  • Making statements based on opinion; back them up with references or personal experience.


To learn more, see our tips on writing great answers.




draft saved


draft discarded














StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53441843%2fmake-how-pre-requs-are-creating-automatically%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown





















































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown

































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown







這個網誌中的熱門文章

Tangent Lines Diagram Along Smooth Curve

Yusuf al-Mu'taman ibn Hud

Zucchini