【发布时间】:2025-12-15 00:40:01
【问题描述】:
在将target_link_libraries 与不太旧版本的 CMake 一起使用时,我们鼓励我使用关键字PRIVATE、PUBLIC 或INTERFACE 之一。假设我只想完成链接,不想了解我的选择的含义。我只想让我的可执行文件链接到库。
- 什么是明智的默认选择?
- 我怎么知道,我应该开始理解关键词的含义?换句话说,如果我选择了错误的错误(理智的默认或明显的错误),会发生什么样的错误?
【问题讨论】:
-
@StephenNewell 这个问题有很好的答案。感谢您在此处链接。但它解释了关键词的含义。我想有一个默认值而无需进一步考虑。
-
“我只想让我的可执行文件链接到库。” - 由于一个可执行文件不能被链接进入另一个可执行文件或库,那么对于一个可执行文件
INTERFACE链接没有意义,PUBLIC和PRIVATE链接给出效果一样。 -
“我不想理解我的选择的含义” - 如此懒惰的理由。目前,我将question 视为您的正确副本。即使您希望您的问题特定于可执行链接,对重复问题的附加答案看起来也比(您的)附加问题更好。
-
“什么是明智的默认选择?” 不难弄清楚。对于可执行文件,不要使用
INTERFACE;对于库,根据经验,只需检查您的库的公共标头:是否提到了链接库的标头?然后使用PUBLIC,除非标头不参与lib本身的编译;在这种情况下,请改用INTERFACE。否则使用PRIVATE。错误的选择可能会导致符号/标题或符号或标题不可用的意外冲突,除非您将 lib 的依赖项链接到“手动”链接您的 lib。
标签: cmake