Setting up cmake for my simple project?

I have for some time had some problems incorporating modern cmake into a project I've been working fr some while and seem to be stuck on how i should define the the individual CMakeLists, and the top-level CMakeList.

My project structure is pretty simple.

├── build
└── src
    ├── include
    │   ├── database
    │   │   ├── database.cpp
    │   │   └── database.h
    │   ├── match
    │   │   ├── match.h
    │   │   └── mathc.cpp
    │   ├── record
    │   │   ├── lib
    │   │   ├── record.cpp
    │   │   └── record.h
    │   └── spectogram
    │       ├── spectogram.cpp
    │       └── spectrogram.h
    └── main.cpp

main.cpp are linked to all the includes, and some of the includes should know the presence of other includes, meaning, I should be able to include match.h in database.h. Some third-party libs are also going to be used, in this case I am using portaudio, download and installed using externalproject_add, which should only be visible for the include which holds the library, in this case record, should only see this.

But how I should define the individual CMakeList, is currently unknown.

I've scouted the net for a proper way of setting this up, but cannot seem to find one that I understand.

How do i define the CMakeLists for this project, and how do i make sure that the includes, are visible for the Main.cpp and the includes files that need them, and how do I make third-party-libraries visible only for the includes that it is being used for.

CMakeLists example structure tried: CMakeLists.txt

cmake_minimum_required(VERSION 3.2)
project(soundcloud)
#add_subdirectory(src/database)
#add_subdirectory(src/match)
#add_subdirectory(src/record)
add_subdirectory(src/include/spectogram)

add_executable(cmakeDemo src/main.cpp)
SET_TARGET_PROPERTIES(cmakeDemo PROPERTIES LINKER_LANGUAGE Cxx)
target_link_libraries(cmakeDemo spectogram)
#target_link_libraries(cmakeDemo database match record spectogram)

src/include/database/CMakeLists.txt

add_library(spectogram STATIC .)
target_include_directories(spectogram PUBLIC .)

getting error message:

CMake Error: Error required internal CMake variable not set, cmake may not be built correctly.
Missing variable is:
CMAKE_Cxx_LINK_EXECUTABLE
CMake Error: Cannot determine link language for target "spectogram".
CMake Error: CMake can not determine linker language for target: spectogram