cmake_minimum_required(VERSION 3.13) set(CMAKE_POLICY_DEFAULT_CMP0077 NEW) project(AnimTestbed VERSION 0.0.1 LANGUAGES CXX C) find_package(Threads) find_package(OpenGL REQUIRED) # glfw set(GLFW_BUILD_DOCS Off) set(GLFW_BUILD_EXAMPLES Off) set(GLFW_BUILD_TESTS Off) set(GLFW_BUILD_INSTALL Off) add_subdirectory(3rdparty/glfw) # ozz set(ozz_build_tools ON) set(ozz_build_fbx OFF CACHE BOOL "") set(ozz_build_gltf ON) set(ozz_build_data OFF CACHE BOOL "") set(ozz_build_samples OFF CACHE BOOL "") set(ozz_build_howtos OFF CACHE BOOL "") set(ozz_build_tests OFF CACHE BOOL "") set(ozz_build_simd_ref OFF CACHE BOOL "") set(ozz_build_msvc_rt_dll OFF CACHE BOOL "") add_subdirectory(3rdparty/ozz-animation) set(ThirdPartyIncludeDeps PUBLIC $ PUBLIC $ PUBLIC $ PUBLIC $ PUBLIC $ PUBLIC $ PUBLIC $ PUBLIC $ PUBLIC $ PUBLIC $ ) # Shared code by main executable and tests add_library(AnimTestbedCode OBJECT src/SyncTrack.cc src/SyncTrack.h src/ozzutils.cc src/AnimGraph/AnimGraphResource.cc src/AnimGraph/AnimGraphResource.h src/AnimGraph/AnimGraph.cc src/AnimGraph/AnimGraph.h src/AnimGraph/AnimGraphNodes.cc src/AnimGraph/AnimGraphNodes.h src/AnimGraph/AnimGraphData.cc src/AnimGraph/AnimGraphData.h) target_include_directories( AnimTestbedCode PUBLIC src ${ThirdPartyIncludeDeps} ) target_compile_features(AnimTestbedCode PRIVATE cxx_std_17) # AnimTestbed Executable add_executable(AnimTestbed) target_include_directories( AnimTestbed PUBLIC ${ThirdPartyIncludeDeps} ) target_sources(AnimTestbed PRIVATE src/main.cc src/SkinnedMeshRenderer.cc src/AnimGraph/AnimGraphEditor.cc src/AnimGraph/AnimGraphEditor.h src/Camera.c src/SkinnedMesh.cc src/SkinnedMesh.h src/SkinnedMeshResource.cc src/SkinnedMeshResource.h 3rdparty/glfw/deps/glad_gl.c 3rdparty/imgui/imgui.cpp 3rdparty/imgui/imgui_draw.cpp 3rdparty/imgui/imgui_widgets.cpp 3rdparty/imgui/imgui_tables.cpp 3rdparty/imgui/imgui_demo.cpp 3rdparty/imgui/backends/imgui_impl_glfw.cpp 3rdparty/imgui/backends/imgui_impl_opengl3.cpp 3rdparty/imgui/misc/cpp/imgui_stdlib.cpp 3rdparty/imnodes/imnodes.cpp 3rdparty/imgui-node-editor/imgui_node_editor.cpp 3rdparty/imgui-node-editor/imgui_node_editor_api.cpp 3rdparty/imgui-node-editor/imgui_node_editor.h 3rdparty/imgui-node-editor/imgui_node_editor_internal.h 3rdparty/imgui-node-editor/imgui_bezier_math.h 3rdparty/imgui-node-editor/imgui_bezier_math.inl 3rdparty/imgui-node-editor/imgui_canvas.cpp 3rdparty/imgui-node-editor/imgui_canvas.h 3rdparty/imgui-node-editor/imgui_extra_math.h 3rdparty/imgui-node-editor/imgui_extra_math.inl 3rdparty/imgui-node-editor/crude_json.cpp 3rdparty/imgui-node-editor/crude_json.h ) target_link_libraries(AnimTestbed AnimTestbedCode glfw ozz_base ozz_geometry ozz_animation ${OPENGL_LIBRARIES}) # Tests add_executable(runtests) set(ozz_offline_test_objs 3rdparty/ozz-animation/src/animation/offline/skeleton_builder.cc 3rdparty/ozz-animation/src/animation/offline/raw_skeleton.cc 3rdparty/ozz-animation/src/animation/offline/animation_builder.cc 3rdparty/ozz-animation/src/animation/offline/raw_animation.cc ) target_sources(runtests PRIVATE tests/AnimGraphResourceTests.cc tests/AnimGraphEvalTests.cc tests/NodeDescriptorTests.cc tests/SyncTrackTests.cc tests/main.cc ${ozz_offline_test_objs} ) target_include_directories( runtests PUBLIC $ PUBLIC $ ${ThirdPartyIncludeDeps} ) target_compile_features(runtests PRIVATE cxx_std_17) target_link_libraries(runtests AnimTestbedCode glfw ozz_base ozz_geometry ozz_animation)