target_XXX() の PRIVATE とかって何?

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

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

?

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

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