To solve this optimization problem, we need to define variables for the number of breakfast and lunch options, set up constraints based on the time available for preparation and packaging, and then maximize the profit.

Let's denote:
- $B$ as the number of breakfast options,
- $L$ as the number of lunch options.

The objective is to maximize profit, given by $10B + 8L$, under the constraints:
1. Preparation time constraint: $7B + 8L \leq 700$
2. Packaging time constraint: $2B + 3L \leq 500$

Both $B$ and $L$ should be non-negative integers since they represent the number of meals.

Here's how we translate this into Gurobi code in Python:

```python
from gurobipy import *

# Create a model
m = Model("Meal_Optimization")

# Define variables
B = m.addVar(vtype=GRB.INTEGER, name="Breakfast_Options", lb=0)
L = m.addVar(vtype=GRB.INTEGER, name="Lunch_Options", lb=0)

# Set the objective function
m.setObjective(10*B + 8*L, GRB.MAXIMIZE)

# Add constraints
m.addConstr(7*B + 8*L <= 700, "Preparation_Time")
m.addConstr(2*B + 3*L <= 500, "Packaging_Time")

# Optimize the model
m.optimize()

# Print results
if m.status == GRB.OPTIMAL:
    print("Optimal solution found:")
    print(f"Breakfast Options: {B.x}")
    print(f"Lunch Options: {L.x}")
    print(f"Maximum Profit: ${10*B.x + 8*L.x}")
else:
    print("No optimal solution found")
```