@startuml left to right direction hide <> stereotype skinparam rectangle<> { borderColor Transparent backgroundColor Transparent fontColor Transparent shadowing false } folder "source directory" as srcdir { folder "include/cmake-exercise" as include_srcdir { file a.hh file b.hh file c.hh } folder "src" { file a.cc file b.cc } folder "test" as test_srcdir { file test.cc } file CMakeLists.txt } folder "build directory" as builddir { rectangle folders_layout <> { folder "src" as src_builddir { file a.o file b.o } folder "test" as test_builddir { file test.o } folder "include/cmake-exercise" as include_builddir { file config.hh } } rectangle artifacts_layout <> { artifact "<>\nlibstatic.a" as static artifact "<>\nlibshared.so" as shared artifact "<>\ntest-binary" as test static -[hidden]r- shared shared -[hidden]r- test } } srcdir -[hidden]r- builddir package package.tar.xz { folder "/include/cmake-exercise" { file a.hh as installed_a.hh file b.hh as installed_b.hh file c.hh as installed_c.hh file config.hh as installed_config.hh } folder "/share/cmake-exercise/test" { artifact "<>\ntest" as installed_test } folder "/lib" { artifact "<>\nlibshared.so" as installed_shared } } actor CMake a.hh --> installed_a.hh : <> b.hh --> installed_b.hh : <> c.hh --> installed_c.hh : <> config.hh --> installed_config.hh : <> test --> installed_test : <> shared --> installed_shared : <> file "<>\na.cc" as a.cc file "<>\nb.cc" as b.cc file "<>\na.hh" as a.hh file "<>\nb.hh" as b.hh file "<>\nc.hh" as c.hh file "<>\nconfig.hh" as config.hh file "<>\na.o" as a.o file "<>\nb.o" as b.o file "<>\ntest.o" as test.o file "<>\ntest.cc" as test.cc CMake -u-> config.hh : <> a.cc --> a.o : <> b.cc --> b.o : <> test.cc --> test.o : <> test ..> test.o : <> test ..> static : <> static ..> a.o : <> shared ..> a.o : <> shared ..> b.o : <> b.hh ~r~> a.hh : <> a.hh ~~> c.hh : <> b.hh ~~> c.hh : <> a.hh ~~> config.hh : <> b.hh ~~> config.hh : <> a.cc ~~> a.hh : <> b.cc ~~> b.hh : <> test.cc ~~> a.hh : <> @enduml