正如here所解释的那样,在现代cmake中,你应该将include / link目标设为私有。您的CMakeList.txt
应该看起来像这样:
add_executable(myexe main.cpp)
target_include_directories(myexe PRIVATE ${mylib_include_dir})
target_link_libraries(myexe PRIVATE mylib)
如果我使用PRIVATE
或PUBLIC
,关于构建时间会有所不同吗?
答案 0 :(得分:1)
CMake部分主要反映您的C ++模块架构。
E.g。如果你有两个库,并且一个(B)包含一个派生自另一个(A)中的类的公共类,则包含类B的头将包含A类。这将反映在PUBLIC
CMake中两者之间的依赖声明。
通过减少依赖性来优化代码/体系结构有很多积极的影响,包括。编译时间。关于效果的讨论,参见例如:
我在这里提到的一个常见主题通常是标题为“#34;通过减少标题依赖性来减少C ++构建时间”#34;。
<强>参考强>