cmake_minimum_required(VERSION 3.10) project(orbital_simulator) set(CMAKE_CXX_STANDARD 23) set(CMAKE_CXX_STANDARD_REQUIRED ON) # Enable testing enable_testing() include(CTest) # Find required packages find_package(Boost REQUIRED COMPONENTS program_options) find_package(nlohmann_json REQUIRED) find_package(GTest REQUIRED) # Add source files set(SOURCES src/main.cpp src/body.cpp src/calc.cpp src/simulator.cpp ) # Add source files for tests (excluding main.cpp) set(TEST_SOURCES src/body.cpp src/calc.cpp src/simulator.cpp ) # Add header files set(HEADERS src/body.hpp src/calc.hpp src/simulator.hpp src/units.hpp ) # Create main executable add_executable(orbital_simulator ${SOURCES} ${HEADERS}) # Create test executable add_executable(orbital_simulator_tests tests/body_test.cpp tests/calc_test.cpp tests/simulator_test.cpp ${TEST_SOURCES} # Use test sources instead of all sources ) # Link libraries for main executable target_link_libraries(orbital_simulator PRIVATE Boost::program_options nlohmann_json::nlohmann_json ) # Link libraries for test executable target_link_libraries(orbital_simulator_tests PRIVATE GTest::GTest GTest::Main ) # Include directories target_include_directories(orbital_simulator PRIVATE ${CMAKE_SOURCE_DIR}/src ) target_include_directories(orbital_simulator_tests PRIVATE ${CMAKE_SOURCE_DIR}/src ${CMAKE_SOURCE_DIR}/tests ) # Add tests to CTest add_test(NAME orbital_simulator_tests COMMAND orbital_simulator_tests) # Optional: Enable ncurses for terminal plotting option(ENABLE_NCURSES "Enable terminal plotting with ncurses" OFF) if(ENABLE_NCURSES) find_package(Curses REQUIRED) target_compile_definitions(orbital_simulator PRIVATE NCURSES_ENABLED) target_link_libraries(orbital_simulator PRIVATE ${CURSES_LIBRARIES}) endif()