add_custom_target(proxsuite-examples-cpp)

function(proxsuite_add_example name)
  add_executable(proxsuite-example-cpp.${name} ${name}.cpp)
  target_link_libraries(proxsuite-example-cpp.${name} PRIVATE proxsuite)
  proxsuite_set_default_target_options(proxsuite-example-cpp.${name})
  if(BUILD_TESTING)
    add_test(NAME proxsuite-example-cpp.${name} COMMAND proxsuite-example-cpp.${name})
  endif()
  add_dependencies(proxsuite-examples-cpp proxsuite-example-cpp.${name})
endfunction()

proxsuite_add_example(estimate_nonconvex_eigenvalue)
proxsuite_add_example(first_example_dense)
proxsuite_add_example(first_example_sparse)
proxsuite_add_example(init_dense_qp_with_box)

proxsuite_add_example(init_dense_qp_with_other_options)
proxsuite_add_example(init_dense_qp_with_timings)
proxsuite_add_example(init_dense_qp)
proxsuite_add_example(init_with_default_options)

proxsuite_add_example(initializing_with_none_without_api)
proxsuite_add_example(initializing_with_none)

proxsuite_add_example(loading_dense_qp_with_box_ineq)
proxsuite_add_example(loading_dense_qp_with_different_backend_choice)
proxsuite_add_example(loading_dense_qp)
proxsuite_add_example(loading_sparse_qp)

proxsuite_add_example(overview-simple)
proxsuite_add_example(solve_dense_qp_with_setting)
proxsuite_add_example(solve_dense_qp)
proxsuite_add_example(solve_without_api_and_option)
proxsuite_add_example(solve_without_api)

proxsuite_add_example(update_dense_qp_ws_previous_result)
proxsuite_add_example(update_dense_qp)
proxsuite_add_example(update_sparse_qp)
