target_XXX() の PRIVATE とかって何?

例えばコンパイルオプションを指定するときは set(CMAKE_CXX_FLAGS -Wall) とかではなく target_compile_options(${CMAKE_PROJECT_NAME} PRIVATE -Wall) のように target_ prefix をもつ関数を使うのがモダンな記述だと言われている
じゃあ PRIVATE ってなんだよ

The PUBLICPRIVATE and INTERFACE scope keywords can be used to specify both the link dependencies and the link interface in one command.
スコープキーワードである PUBLICPRIVATEINTERFACE はリンクの依存関係とインタフェースを1コマンドで指定するために使える)
https://cmake.org/cmake/help/latest/command/target_link_libraries.html

キーワードターゲットに必要そのターゲットに依存するターゲットに必要
PRIVATEox
PUBLICoo
INTERFACExo

CMakeの使い方(その1) C++ - Qiita