private, interface, public

某些cmake函数是为target指定traits的,这些参数需要指定上述3个keywors中的一个。而如果某个target是一个库,那么这3个keywords就尤其重要。

  • private:指定的traits只作用于这个target,而不会作用于那些需要链接这个target的target。
  • interface:相反的含义。这个traits只作用于那些需要链接该target的target,而不作用于该target。
  • public:即private和interface的集合。

所谓的traits,举个例子就比如:要include的目录C++ standard,等等。其对应于底层的INCLUDE_DIRECTORIES(私有属性), INTERFACE_INCLUDE_DIRECTORIES(接口属性), CXX_STANDARD(C++标准这个属性不具备接口值)等变量。

以下函数可以为target添加traits: