cmake_minimum_required(VERSION 3.13) # CMake version check if(ESP_PLATFORM) idf_component_register( SRC_DIRS "." INCLUDE_DIRS "." ) else() project(LinearAlgebra) set(CMAKE_CXX_STANDARD 11) # Enable c++11 standard set(CMAKE_POSITION_INDEPENDENT_CODE ON) add_compile_definitions(GTEST) include(FetchContent) FetchContent_Declare( googletest DOWNLOAD_EXTRACT_TIMESTAMP URL https://github.com/google/googletest/archive/refs/heads/main.zip ) # For Windows: Prevent overriding the parent project's compiler/linker settings set(gtest_force_shared_crt ON CACHE BOOL "" FORCE) FetchContent_MakeAvailable(googletest) include_directories(.) add_library(LinearAlgebra STATIC "FloatSingle.cpp" "Angle.cpp" "Vector2.cpp" "Vector3.cpp" "Quaternion.cpp" "Polar.cpp" "Spherical.cpp" "Matrix.cpp" "Axis.cpp" "AngleAxis.cpp" "SwingTwist.cpp" "Direction.cpp" ) enable_testing() file(GLOB_RECURSE test_srcs test/*_test.cc) add_executable( LinearAlgebraTest ${test_srcs} ) target_link_libraries( LinearAlgebraTest gtest_main LinearAlgebra ) if(MSVC) target_compile_options(LinearAlgebraTest PRIVATE /W4 /WX) else() target_compile_options(LinearAlgebraTest PRIVATE -Wall -Wextra -Wpedantic -Werror) endif() include(GoogleTest) gtest_discover_tests(LinearAlgebraTest) endif()