【问题标题】:Can there be an impact on build time when include/link libraries PUBLIC or PRIVATE?包含/链接库 PUBLIC 或 PRIVATE 时会影响构建时间吗?
【发布时间】:2018-07-12 05:36:30
【问题描述】:

正如here 解释的那样,在现代 cmake 中,您应该将包含/链接目标保持为私有。你的CMakeList.txt 应该有点像这样:

add_executable(myexe main.cpp)
target_include_directories(myexe PRIVATE ${mylib_include_dir})
target_link_libraries(myexe PRIVATE mylib)

如果我使用PRIVATEPUBLIC,它会在构建时间方面有所不同吗?

【问题讨论】:

  • unused 包含目录传递给编译器或将 unused 库传递给链接器时会影响构建时间吗?这正是 CMake 的 PRIVATEPUBLIC 选项之间的区别。

标签: build cmake


【解决方案1】:

CMake 部分主要反映你的 C++ 模块架构。

例如如果您有两个库并且一个 (B) 包含一个从另一个 (A) 中的类派生的公共类,则包含类 B 的标头将包含类 A。这将反映在 PUBLIC CMake 依赖项声明中两者之间。

通过减少依赖来优化你的代码/架构有很多积极的影响,包括。编译时间。有关效果的讨论,请参见例如:

我在这里提到的一般主题之一通常标题为“通过减少标头依赖性来减少 C++ 构建时间”。

参考

【讨论】:

    猜你喜欢
    • 2021-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-13
    • 2018-08-13
    • 2011-11-11
    • 2021-09-25
    相关资源
    最近更新 更多