cmake detect unknown target listed in target_link_libraries
It seems that cmake is not able to detect targets that do not exist. Honestly I was surprised to found that out.
target_link_libraries(Foo
PRIVATE
Bar
Car
)
If the library Car
doesn't exist, I would expect that cmake returns an error at configuration time. Unfortunately this is not the case. Or is the behavior voluntary?
I use cmake version 3.12.1
cmake
add a comment |
It seems that cmake is not able to detect targets that do not exist. Honestly I was surprised to found that out.
target_link_libraries(Foo
PRIVATE
Bar
Car
)
If the library Car
doesn't exist, I would expect that cmake returns an error at configuration time. Unfortunately this is not the case. Or is the behavior voluntary?
I use cmake version 3.12.1
cmake
add a comment |
It seems that cmake is not able to detect targets that do not exist. Honestly I was surprised to found that out.
target_link_libraries(Foo
PRIVATE
Bar
Car
)
If the library Car
doesn't exist, I would expect that cmake returns an error at configuration time. Unfortunately this is not the case. Or is the behavior voluntary?
I use cmake version 3.12.1
cmake
It seems that cmake is not able to detect targets that do not exist. Honestly I was surprised to found that out.
target_link_libraries(Foo
PRIVATE
Bar
Car
)
If the library Car
doesn't exist, I would expect that cmake returns an error at configuration time. Unfortunately this is not the case. Or is the behavior voluntary?
I use cmake version 3.12.1
cmake
cmake
asked Nov 14 '18 at 13:30
lucab0nilucab0ni
1,24912030
1,24912030
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
Only the first argument to target_link_libraries
required to be a target, other argument may be a target, but may be other things as well. Possible types of non-first arguments are described in the CMake documentation:
- A library target name
- A full path to a library file
- A plain library name
- A link flag
(keywords are omitted in that list).
In you case CMake interprets Car
as a plain library name, so it will pass option -lCar
to the linker.
Note, that CMake doesn't try to interpret the linker's flags.
Yes it make sense!
– lucab0ni
Nov 14 '18 at 20:34
add a comment |
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%2f53301413%2fcmake-detect-unknown-target-listed-in-target-link-libraries%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
Only the first argument to target_link_libraries
required to be a target, other argument may be a target, but may be other things as well. Possible types of non-first arguments are described in the CMake documentation:
- A library target name
- A full path to a library file
- A plain library name
- A link flag
(keywords are omitted in that list).
In you case CMake interprets Car
as a plain library name, so it will pass option -lCar
to the linker.
Note, that CMake doesn't try to interpret the linker's flags.
Yes it make sense!
– lucab0ni
Nov 14 '18 at 20:34
add a comment |
Only the first argument to target_link_libraries
required to be a target, other argument may be a target, but may be other things as well. Possible types of non-first arguments are described in the CMake documentation:
- A library target name
- A full path to a library file
- A plain library name
- A link flag
(keywords are omitted in that list).
In you case CMake interprets Car
as a plain library name, so it will pass option -lCar
to the linker.
Note, that CMake doesn't try to interpret the linker's flags.
Yes it make sense!
– lucab0ni
Nov 14 '18 at 20:34
add a comment |
Only the first argument to target_link_libraries
required to be a target, other argument may be a target, but may be other things as well. Possible types of non-first arguments are described in the CMake documentation:
- A library target name
- A full path to a library file
- A plain library name
- A link flag
(keywords are omitted in that list).
In you case CMake interprets Car
as a plain library name, so it will pass option -lCar
to the linker.
Note, that CMake doesn't try to interpret the linker's flags.
Only the first argument to target_link_libraries
required to be a target, other argument may be a target, but may be other things as well. Possible types of non-first arguments are described in the CMake documentation:
- A library target name
- A full path to a library file
- A plain library name
- A link flag
(keywords are omitted in that list).
In you case CMake interprets Car
as a plain library name, so it will pass option -lCar
to the linker.
Note, that CMake doesn't try to interpret the linker's flags.
answered Nov 14 '18 at 19:56
TsyvarevTsyvarev
26.7k42762
26.7k42762
Yes it make sense!
– lucab0ni
Nov 14 '18 at 20:34
add a comment |
Yes it make sense!
– lucab0ni
Nov 14 '18 at 20:34
Yes it make sense!
– lucab0ni
Nov 14 '18 at 20:34
Yes it make sense!
– lucab0ni
Nov 14 '18 at 20:34
add a comment |
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%2f53301413%2fcmake-detect-unknown-target-listed-in-target-link-libraries%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