相关疑难解决方法(0)

什么是默认的 target_link_libraries 隐私设置?

我想知道什么是默认target_link_libraries隐私。

我在 CMake 中添加了一行:

target_link_libraries(myTarget
        libraryA
        libraryB
        )
Run Code Online (Sandbox Code Playgroud)

但我不知道是不是PRIVATEPUBLIC或者可能INTERFACE。我检查文档,但我没有看到我的问题的答案:(

编辑:

我发现某事

最后要注意的是,如果您调用 target_link_libraries() 并且没有指定任何 PRIVATE、PUBLIC 或 INTERFACE,您可能会认为它将被视为 PUBLIC。然而,情况实际上比这更复杂。它可以被视为 PUBLIC 或 PRIVATE,具体取决于已执行的其他 target_link_library() 调用和/或目标属性操作。target_link_libraries() 的文档对此进行了一些讨论,但您必须深入研究它提到的目标属性的文档,以了解哪些情况会导致 PRIVATE 或 PUBLIC 行为。

什么情况?(顺便说一句。这句话的作者是 Craig Scott,他似乎是 SO 的活跃用户,我相信他可以回答我......)

c++ cmake

12
推荐指数
1
解决办法
2257
查看次数

CMake 拒绝第二个 target_link_libraries 谈论“关键字”与“普通”

我正在编译一个二进制文件,target_link_libraries()出于各种原因,我想在两个不同的命令中添加它的依赖库。

我的命令如下所示:

target_link_libraries(my_prog PRIVATE foo bar)
target_link_libraries(my_prog baz)
Run Code Online (Sandbox Code Playgroud)

我得到错误:

  The keyword signature for target_link_libraries has already been used with
  the target "my_prog".  All uses of target_link_libraries with a target
  must be either all-keyword or all-plain.

  The uses of the keyword signature are here:

   * tests/CMakeLists.txt:10 (target_link_libraries)
Run Code Online (Sandbox Code Playgroud)

这是什么意思?我该怎么办?

cmake build-dependencies

9
推荐指数
1
解决办法
7504
查看次数

标签 统计

cmake ×2

build-dependencies ×1

c++ ×1