Make: How pre-requs are creating automatically?
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
add a comment |
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
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
andgrep
? 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
add a comment |
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
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
makefile gnu-make
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
andgrep
? 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
add a comment |
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
andgrep
? 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
add a comment |
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
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
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
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.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
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
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
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
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
andgrep
? 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