cmake_minimum_required(VERSION 3.27) project(z3d) set(CMAKE_CXX_STANDARD 23) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Ofast -pedantic -Wall -Werror ") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fmacro-prefix-map=${CMAKE_CURRENT_SOURCE_DIR}/=") add_executable(z3d main.cpp include/assets/components/material_components.hpp include/assets/components/point_cloud_vertex_components.hpp include/assets/components/mesh_vertex_components.hpp include/assets/data/material_data.hpp include/assets/data/mesh_data.hpp include/assets/data/point_cloud_data.hpp include/assets/file_parsers/kitti_loader.hpp include/assets/file_parsers/obj_loader.hpp include/assets/file_parsers/stl_loader.hpp include/assets/file_parsers/uos_loader.hpp include/assets/components/mesh_vertex_components.hpp include/scene/camera.hpp include/scene/flying_camera.hpp include/opengl/handles/mesh_handle.hpp include/opengl/handles/point_cloud_handle.hpp include/opengl/handles/shader_program_handle.hpp include/opengl/handles/texture_handle.hpp include/opengl/data/mesh_data.hpp include/opengl/data/point_cloud_data.hpp include/opengl/data/shader_program_data.hpp include/scene/lighting_setup.hpp include/rendering/batch_renderers/mesh_batch_renderer.hpp include/opengl/error.hpp include/rendering/batches/mesh_batch.hpp include/rendering/batches/point_cloud_batch.hpp include/util/arx.hpp include/util/extra_arx_parsers.hpp include/util/for_each.hpp include/util/function.hpp include/util/image.hpp include/util/logger.hpp include/util/string_indexer.hpp include/util/string_literal.hpp include/util/uix.hpp source/assets/file_parsers/stl_loader.cpp source/assets/file_parsers/obj_loader.cpp source/scene/flying_camera.cpp source/opengl/data/point_cloud_data.cpp source/opengl/handles/shader_program_handle.ipp source/opengl/data/texture_data.ipp source/opengl/data/mesh_data.cpp include/opengl/error.hpp source/opengl/data/shader_program_data.cpp source/opengl/handles/mesh_handle.ipp source/opengl/handles/point_cloud_handle.ipp source/opengl/handles/texture_handle.ipp include/assets/data/surface_properties.hpp include/util/unroll_bool_template.hpp include/rendering/batch_renderers/point_cloud_batch_renderer.hpp source/rendering/batches/mesh_batch.ipp source/rendering/batches/point_cloud_batch.ipp include/opengl/shader_program_variable.hpp include/opengl/type_utils.hpp include/util/binary_ifstream.hpp source/assets/file_parsers/kitti_loader.cpp include/assets/file_parsers/generic/generic_3dtk_loader.hpp include/assets/file_parsers/uosr_loader.hpp include/assets/file_parsers/uos_normal_loader.hpp include/assets/file_parsers/uos_rgb_loader.hpp include/assets/data_loaders/mesh_loader.hpp source/assets/data_loaders/mesh_loader.cpp source/assets/data_loaders/mesh_loader.cpp include/assets/data_loaders/point_cloud_loader.hpp include/assets/data_loaders/generic/base_dynamic_loader.hpp source/assets/data_loaders/generic/base_dynamic_loader.ipp source/assets/data_loaders/point_cloud_loader.cpp include/opengl/handles/matrix_handles.hpp include/viewer/instance.hpp include/opengl/data/material_data.hpp include/opengl/handles/material_handle.hpp include/opengl/handles/surface_properties_handle.hpp include/opengl/handles/alpha_handle.hpp source/opengl/data/material_data.ipp include/util/specialised_lambda.hpp include/viewer/asset_types.hpp source/viewer/instance.cpp include/viewer/asset_loader.hpp source/viewer/asset_loader.cpp include/assets/file_parsers/glsl_loader.hpp include/assets/data/shader_source_data.hpp source/assets/file_parsers/glsl_loader.cpp include/viewer/settings.hpp include/opengl/data/shader_data.hpp source/opengl/data/shader_data.ipp source/opengl/data/point_cloud_data.ipp source/opengl/data/shader_data.cpp include/opengl/handles/shader_handle.hpp include/util/string_lookup.hpp include/viewer/dynamic_shader_program_loading.hpp source/viewer/dynamic_shader_program_loading.cpp source/opengl/handles/shader_program_handle.cpp include/opengl/shader_program_lookup.hpp source/opengl/shader_program_lookup.cpp include/opengl/shading/attributes/point_cloud_attributes.hpp include/opengl/shading/uniforms/mesh_uniforms.hpp include/opengl/shading/uniforms/point_cloud_uniforms.hpp include/opengl/shading/features/mesh_features.hpp include/opengl/shading/features/point_cloud_features.hpp include/rendering/requirements/mesh_requirements.hpp include/rendering/requirements/point_cloud_requirements.hpp include/rendering/modes/mesh_modes.hpp include/rendering/modes/point_cloud_modes.hpp source/rendering/batch_renderers/mesh_batch_renderer.cpp source/rendering/batch_renderers/point_cloud_batch_renderer.cpp include/rendering/shader_program_lookups/mesh_lookup.hpp include/rendering/shader_program_lookups/mesh_lookup.hpp source/rendering/shader_program_lookups/mesh_lookup.cpp source/rendering/shader_program_lookups/point_cloud_lookup.cpp include/rendering/shader_program_lookups/point_cloud_lookup.hpp include/geometry/aabb.hpp source/geometry/normal_estimation.cpp include/geometry/normal_estimation.hpp include/assets/components/texture_components.hpp include/util/enum_bitfield_operators.hpp include/assets/data/texture_data.hpp source/assets/data/mesh_data.ipp source/assets/data/material_data.ipp include/assets/data/generic/vertex_array_data.hpp source/assets/data/texture_data.ipp source/assets/data/point_cloud_data.ipp include/assets/file_parsers/mtl_loader.hpp include/assets/data_loaders/material_loader.hpp include/util/id_type.hpp include/assets/data_stores/generic/generic_basic_store.hpp source/assets/data_stores/generic/generic_basic_store.ipp include/assets/data_stores/material_store.hpp include/assets/data_stores/mesh_store.hpp include/assets/data_stores/point_cloud_store.hpp include/util/result.hpp source/assets/file_parsers/mtl_loader.cpp include/util/line_parser.hpp include/assets/data_loaders/texture_loader.hpp source/assets/data_loaders/texture_loader.cpp include/assets/data_stores/texture_store.hpp include/opengl/data_managers/texture_manager.hpp include/assets/prefetch_lookups/mesh_prefetch_lookup.hpp include/assets/prefetch_lookups/point_cloud_prefetch_lookup.hpp include/assets/prefetch_lookups/material_prefetch_lookup.hpp include/assets/prefetch_lookups/texture_prefetch_lookup.hpp include/assets/prefetch_lookups/pose_prefetch_lookup.hpp include/assets/data_stores/pose_store.hpp include/assets/file_parsers/kitti_pose_loader.hpp include/assets/file_parsers/threedtk_pose_loader.hpp source/assets/file_parsers/threedtk_pose_loader.cpp include/assets/data/pose_data.hpp source/assets/file_parsers/kitti_pose_loader.cpp include/assets/prefetch_queue.hpp include/util/string_list.hpp include/assets/data_stores/material_library_store.hpp include/assets/data/material_library_data.hpp include/assets/data_loaders/material_library_loader.hpp include/assets/prefetch_lookups/material_library_prefetch_lookup.hpp include/assets/prefetch_lookups/shader_prefetch_lookup.hpp include/assets/data_stores/shader_source_store.hpp include/assets/file_parsers/generic/generic_3dtk_loader.hpp source/assets/file_parsers/generic/generic_3dtk_loader.ipp include/assets/prefetch_lookup.hpp source/assets/prefetch_lookups/pose_prefetch_lookup.cpp include/assets/data_stores.hpp include/opengl/metadata/shader_source_metadata.hpp source/opengl/data_managers/shader_manager.cpp include/opengl/shading/model_geometry.hpp include/opengl/shading/shader_stage.hpp include/opengl/shading/requirements/shader_program_requirements.hpp include/opengl/shading/attributes/mesh_attributes.hpp include/opengl/data_managers/shader_source_manager.hpp source/opengl/data_managers/shader_source_manager.cpp include/opengl/shading/shader_metadata_language.hpp include/opengl/shading/features/generic_features.hpp include/opengl/shading/features/combined_features.hpp include/opengl/shading/requirements/shader_source_requirements.hpp include/opengl/metadata/preprocessed_shader_source_metadata.hpp include/opengl/shading/requirements/shader_requirements.hpp include/opengl/metadata/shader_metadata.hpp include/opengl/metadata/shader_set_metadata.hpp include/opengl/handles/shader_handle_set.hpp include/opengl/shading/requirements/shader_set_requirements.hpp include/opengl/data_managers/shader_program_manager.hpp include/opengl/metadata/shader_program_metadata.hpp source/opengl/data_managers/shader_program_manager.cpp source/opengl/data_managers/texture_manager.cpp include/util/reference_counter.hpp include/opengl/resource_management/resource_manager.hpp source/opengl/resource_management/resource_manager.ipp include/opengl/data_managers/shader_manager.hpp include/opengl/data_managers/mesh_vertex_buffer_manager.hpp source/opengl/data_managers/mesh_vertex_buffer_manager.cpp include/opengl/resource_management/reference_counter.hpp include/opengl/resource_management/reference_counter.hpp include/opengl/resource_management/resource_handle.hpp source/opengl/resource_management/resource_handle.ipp include/opengl/handles/vertex_buffer_handle.hpp source/opengl/handles/vertex_buffer_handle.ipp include/opengl/handles/index_buffer_handle.hpp source/opengl/handles/index_buffer_handle.ipp include/opengl/metadata/texture_metadata.hpp include/opengl/vertex_buffer_utils.hpp include/opengl/data_managers/mesh_index_buffer_manager.hpp include/opengl/metadata/index_buffer_metadata.hpp source/opengl/data_managers/mesh_index_buffer_manager.cpp include/opengl/data_managers/point_cloud_vertex_buffer_manager.hpp source/opengl/data_managers/point_cloud_vertex_buffer_manager.cpp include/assets/data_views/mesh_view.hpp include/assets/data_views/point_cloud_view.hpp include/assets/data_views/shader_source_view.hpp include/assets/data_stores/generic/generic_mesh_store.hpp source/assets/data_stores/generic/generic_mesh_store.ipp include/assets/data_stores/generic/generic_point_cloud_store.hpp source/assets/data_stores/generic/generic_point_cloud_store.ipp include/assets/data_views/material_view.hpp include/assets/data_views/texture_view.hpp include/assets/data_stores/generic/generic_material_store.hpp source/assets/data_stores/generic/generic_material_store.ipp source/assets/data_stores/shader_source_store.ipp include/opengl/metadata/mesh_vertex_buffer_metadata.hpp include/opengl/metadata/point_cloud_vertex_buffer_metadata.hpp ) target_include_directories(z3d PRIVATE include) target_include_directories(z3d PRIVATE source) # for ipp headers add_subdirectory(libraries) find_package(GLEW REQUIRED) find_package(OpenGL REQUIRED) find_package(SFML REQUIRED COMPONENTS graphics system) find_package(Eigen3 3.4 REQUIRED NO_MODULE) include_directories(${SFML_INCLUDE_DIR}) include_directories(SYSTEM ${eigen_INCLUDE_DIR}) target_link_libraries(z3d Eigen3::Eigen sfml-graphics sfml-system sfml-window ${OPENGL_LIBRARIES} ${GLEW_LIBRARIES})