set(ADAPTER_HEADERS
  ${CMAKE_CURRENT_LIST_DIR}/C_PointCloud.h
  ${CMAKE_CURRENT_LIST_DIR}/C_Scan.h
  )

set(IMPORT_EXPORT_ASSIMP_HEADERS
  ${CMAKE_CURRENT_LIST_DIR}/MetaData.h
  ${CMAKE_CURRENT_LIST_DIR}/MetaDataSerializer.h
  ${CMAKE_CURRENT_LIST_DIR}/Frustum.h
  )

set(IMPORT_EXPORT_IO_HEADERS
  ${CMAKE_CURRENT_LIST_DIR}/io/DataBlock.h
  ${CMAKE_CURRENT_LIST_DIR}/io/DataBlockExporter.h
  ${CMAKE_CURRENT_LIST_DIR}/io/DataBlockImporter.h
  ${CMAKE_CURRENT_LIST_DIR}/io/DataBlockManager.h
  )

set(IMPORT_EXPORT_HEADERS
  ${CMAKE_CURRENT_LIST_DIR}/ExportBVH.h
  ${CMAKE_CURRENT_LIST_DIR}/Exporter.h
  ${CMAKE_CURRENT_LIST_DIR}/Importer.h
  )

set(ORGANIZATIONAL_HEADERS
  ${CMAKE_CURRENT_LIST_DIR}/AabbHierarchy.h
  ${CMAKE_CURRENT_LIST_DIR}/Grid.h
  ${CMAKE_CURRENT_LIST_DIR}/KdTree.h
  )

set(POINTS_AND_MESHES_HEADERS
  ${CMAKE_CURRENT_LIST_DIR}/Mesh.h
  ${CMAKE_CURRENT_LIST_DIR}/MeshOperations.h
  ${CMAKE_CURRENT_LIST_DIR}/PointCloud.h
  ${CMAKE_CURRENT_LIST_DIR}/PointCloudProperty.h
  ${CMAKE_CURRENT_LIST_DIR}/Scan.h
  ${CMAKE_CURRENT_LIST_DIR}/ScanCameraParams.h
  ${CMAKE_CURRENT_LIST_DIR}/Triangulation.h
  )

set(PRIMITIVE_HEADERS
  ${CMAKE_CURRENT_LIST_DIR}/Color.h
  ${CMAKE_CURRENT_LIST_DIR}/DataType.h
  ${CMAKE_CURRENT_LIST_DIR}/Interpolator.h
  ${CMAKE_CURRENT_LIST_DIR}/MaterialModel.h
  ${CMAKE_CURRENT_LIST_DIR}/Transform.h

  )

set(SKELETAL_HEADERS
  ${CMAKE_CURRENT_LIST_DIR}/Armature.h
  ${CMAKE_CURRENT_LIST_DIR}/Bone.h
  ${CMAKE_CURRENT_LIST_DIR}/BoneTransform.h
  ${CMAKE_CURRENT_LIST_DIR}/Skeleton.h
  ${CMAKE_CURRENT_LIST_DIR}/SkeletonAction.h
  ${CMAKE_CURRENT_LIST_DIR}/SkeletonPose.h
  )

target_sources(${PROJECT_NAME} PRIVATE
  ${ADAPTER_HEADERS}
  ${IMPORT_EXPORT_ASSIMP_HEADERS}
  ${IMPORT_EXPORT_IO_HEADERS}
  ${IMPORT_EXPORT_HEADERS}
  ${ORGANIZATIONAL_HEADERS}
  ${POINTS_AND_MESHES_HEADERS}
  ${PRIMITIVE_HEADERS}
  ${SKELETAL_HEADERS}
  ${CMAKE_CURRENT_LIST_DIR}/API.h
  ${CMAKE_CURRENT_LIST_DIR}/Version.h
)

macro(SetToParentScope Var)
  set(${Var} ${${Var}} PARENT_SCOPE)
endmacro(SetToParentScope)

SetToParentScope(ADAPTER_HEADERS)
SetToParentScope(IMPORT_EXPORT_ASSIMP_HEADERS)
SetToParentScope(IMPORT_EXPORT_IO_HEADERS)
SetToParentScope(IMPORT_EXPORT_HEADERS)
SetToParentScope(ORGANIZATIONAL_HEADERS)
SetToParentScope(POINTS_AND_MESHES_HEADERS)
SetToParentScope(PRIMITIVE_HEADERS)
SetToParentScope(SKELETAL_HEADERS)