cmake_minimum_required(VERSION 3.8) project(RNBOlib) add_library( RNBOlib INTERFACE ) target_sources( RNBOlib INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}/RNBO.cpp ${CMAKE_CURRENT_SOURCE_DIR}/RNBO.h ) target_compile_features(RNBOlib INTERFACE cxx_std_11) target_include_directories(RNBOlib INTERFACE ./ common src ${RNBOLIB_OPTIONAL_HEADER_PATHS} ) add_library( RNBOHeaders INTERFACE ) target_sources( RNBOHeaders INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}/RNBO.h ) target_compile_features(RNBOHeaders INTERFACE cxx_std_11) target_include_directories(RNBOHeaders INTERFACE ./ common src ) # macro to create folder structure # taken from http://blog.audio-tk.com/2015/09/01/sorting-source-files-and-projects-in-folders-with-cmake-and-visual-studioxcode/ # would be good to split to separate cmake file MACRO(SOURCE_GROUP_BY_FOLDER targetfiles) SET(SOURCE_GROUP_DELIMITER "/") SET(last_dir "") SET(files "") FOREACH(file ${targetfiles}) file(RELATIVE_PATH relative_file ${CMAKE_CURRENT_SOURCE_DIR} ${file}) GET_FILENAME_COMPONENT(dir "${relative_file}" PATH) IF (NOT "${dir}" STREQUAL "${last_dir}") IF (files) SOURCE_GROUP("${last_dir}" FILES ${files}) ENDIF (files) SET(files "") ENDIF (NOT "${dir}" STREQUAL "${last_dir}") SET(files ${files} ${file}) SET(last_dir "${dir}") ENDFOREACH(file) IF (files) SOURCE_GROUP("${last_dir}" FILES ${files}) ENDIF (files) ENDMACRO(SOURCE_GROUP_BY_FOLDER) file(GLOB_RECURSE RNBO_SOURCE_FOLDER_FILES ${CMAKE_CURRENT_SOURCE_DIR} *.*) add_library(RNBOSourceFolder STATIC EXCLUDE_FROM_ALL ${RNBO_SOURCE_FOLDER_FILES} ) set_source_files_properties(${RNBO_SOURCE_FOLDER_FILES} PROPERTIES HEADER_FILE_ONLY TRUE) SOURCE_GROUP_BY_FOLDER("${RNBO_SOURCE_FOLDER_FILES}")