CMake target_link_libraries Interface Dependencies
http://stackoverflow.com/questions/26037954/cmake-target-link-libraries-interface-dependencies
例子
target_link_libraries(${PROJECT_NAME} PRIVATE common my_json)
PRIVATE
If you are creating a shared library and your source cpp files #include the headers of another library (Say, QtNetwork for example), but your header files don’t include QtNetwork headers, then QtNetwork is a PRIVATE dependency.
PUBLIC
If your source files and your headers include the headers of another library, then it is a PUBLIC dependency.
INTERFACE
If your header files but not your source files include the headers of another library, then it is an INTERFACE dependency.
Other build properties of PUBLIC and INTERFACE dependencies are propagated to consuming libraries. http://www.cmake.org/cmake/help/v3.0/manual/cmake-buildsystem.7.html#transitive-usage-requirements