target_sources() and header visibility

I think you probably want something like this:
cmake_minimum_required(VERSION 3.15.0)

project(FooProject)

add_library(foo_lib STATIC)

target_sources(foo_lib
    PRIVATE
    sources/foo.cpp
    headers/foo.h
    interfaces/foo_interface.h
)

target_include_directories(foo_lib PUBLIC interfaces PRIVATE headers)