[proofplan]
Choose a finite trivializing cover of $M$ and a smooth [partition of unity](/page/Partition%20of%20Unity) subordinate to it, then replace it by smooth functions whose squares sum to $1$. Multiplying the local frame vectors by these square-partition functions gives finitely many global sections that generate every section. To prove projectivity, construct an explicit surjective homomorphism from a finite free $C^\infty(M)$-module onto $\Gamma(M,E)$ and then build a $C^\infty(M)$-linear right inverse by multiplying the local coordinate functions of a section by the same square-partition functions. The identity $\sum_i \theta_i^2=1$ makes the splitting computation exact and identifies $\Gamma(M,E)$ as a direct summand of a finite free module.
[/proofplan]
[step:Choose finitely many trivializations and a subordinate smooth partition of unity]
Let $A := C^\infty(M)$ denote the ring of smooth real-valued functions on $M$. Since $\pi:E \to M$ is a smooth vector bundle of rank $k$, for every $p \in M$ there is an open neighbourhood $U \subset M$ of $p$ and a smooth vector bundle trivialization
\begin{align*}
\Phi: \pi^{-1}(U) &\to U \times \mathbb{R}^k
\end{align*}
covering the identity map on $U$ and restricting on each fibre $E_q := \pi^{-1}(\{q\})$ to a linear isomorphism $E_q \to \mathbb{R}^k$.
The open sets admitting such trivializations cover $M$. Since $M$ is compact, choose a finite trivializing open cover
\begin{align*}
M = \bigcup_{i=1}^N U_i.
\end{align*}
For each $i \in \{1,\dots,N\}$, fix a smooth local frame
\begin{align*}
e_{i1},\dots,e_{ik}: U_i &\to E
\end{align*}
for $E$ over $U_i$, meaning that for every $p \in U_i$ the vectors $e_{i1}(p),\dots,e_{ik}(p)$ form a basis of the fibre $E_p$.
By the [smooth partition of unity theorem](/theorems/3917) subordinate to a finite open cover (citing a result not yet in the wiki: Smooth Partition of Unity), choose smooth functions $\varphi_i:M \to [0,1]$ for $i=1,\dots,N$ such that $\operatorname{supp}\varphi_i \subset U_i$ for each $i$ and $\sum_{i=1}^N \varphi_i(p)=1$ for every $p \in M$. Define the smooth denominator function $d:M \to (0,\infty)$ by $d(p)=\left(\sum_{j=1}^N \varphi_j(p)^2\right)^{1/2}$. Since at least one $\varphi_j(p)$ is positive at each $p$, the denominator is strictly positive. For each $i$, define a smooth function $\theta_i:M \to [0,1]$ by $\theta_i(p)=\varphi_i(p)/d(p)$. Then $\operatorname{supp}\theta_i \subset U_i$ and
\begin{align*}
\sum_{i=1}^N \theta_i(p)^2=1
\end{align*}
for every $p \in M$.
[guided]
The compactness of $M$ is used first to make the construction finite. A vector bundle is locally trivial by definition, so the trivializing neighbourhoods form an open cover of $M$. Since $M$ is compact, this cover has a finite subcover, which we write as
\begin{align*}
M = \bigcup_{i=1}^N U_i.
\end{align*}
On each $U_i$, choose a smooth local frame
\begin{align*}
e_{i1},\dots,e_{ik}: U_i &\to E.
\end{align*}
This means that each $e_{ia}$ is a smooth local section of $\pi:E \to M$ over $U_i$, and for every $p \in U_i$ the list
\begin{align*}
e_{i1}(p),\dots,e_{ik}(p)
\end{align*}
is a basis of the [vector space](/page/Vector%20Space) $E_p$.
We also need a way to combine these local frame expansions into a global expression and later split the finite free presentation. For this, use the smooth partition of unity theorem subordinate to the finite cover (citing a result not yet in the wiki: Smooth Partition of Unity). It gives smooth functions $\varphi_i:M \to [0,1]$ with $\operatorname{supp}\varphi_i \subset U_i$ and $\sum_{i=1}^N \varphi_i(p)=1$ for every $p \in M$. Define $d:M \to (0,\infty)$ by $d(p)=\left(\sum_{j=1}^N \varphi_j(p)^2\right)^{1/2}$, and define $\theta_i:M \to [0,1]$ by $\theta_i(p)=\varphi_i(p)/d(p)$. The denominator is positive because some $\varphi_j(p)$ is positive at every point. Hence $\operatorname{supp}\theta_i \subset U_i$ and
\begin{align*}
\sum_{i=1}^N \theta_i(p)^2=1
\end{align*}
for every $p \in M$. The support condition is essential: it lets us multiply a local section defined only on $U_i$ by $\theta_i$ and extend the product by zero to a smooth global section.
[/guided]
[/step]
[step:Turn the local frames into finitely many global sections]
For each pair $(i,a)$ with $1 \le i \le N$ and $1 \le a \le k$, define a global section $\sigma_{ia}:M \to E$ by setting $\sigma_{ia}(p)=\theta_i(p)e_{ia}(p)$ for $p \in U_i$ and $\sigma_{ia}(p)=0_p$ for $p \in M \setminus \operatorname{supp}\theta_i$, where $0_p$ denotes the zero vector in the fibre $E_p$.
This definition is compatible on the overlap because $\theta_i(p)=0$ for $p \notin \operatorname{supp}\theta_i$, and $\operatorname{supp}\theta_i \subset U_i$. Hence $\sigma_{ia}$ is smooth: on $U_i$ it is the smooth product of the smooth function $\theta_i|_{U_i}$ with the smooth local section $e_{ia}$, and on the [open set](/page/Open%20Set) $M \setminus \operatorname{supp}\theta_i$ it is the zero section. Smoothness near a boundary point of $U_i$ follows because every point of $M \setminus U_i$ has a neighbourhood contained in $M \setminus \operatorname{supp}\theta_i$, on which the section is identically zero.
[/step]
[step:Show that the constructed global sections generate every section]
Let $s \in \Gamma(M,E)$ be a smooth global section. For each $i \in \{1,\dots,N\}$, since $e_{i1},\dots,e_{ik}$ is a frame on $U_i$, there are unique smooth coefficient functions
\begin{align*}
f_{ia}: U_i &\to \mathbb{R},
\qquad a=1,\dots,k,
\end{align*}
such that
\begin{align*}
s(p)=\sum_{a=1}^k f_{ia}(p)e_{ia}(p)
\end{align*}
for every $p \in U_i$.
For each pair $(i,a)$, define $g_{ia}:M \to \mathbb{R}$ to be the smooth global function obtained by extending $\theta_i f_{ia}:U_i \to \mathbb{R}$ by zero outside $U_i$. This extension is smooth because $\operatorname{supp}\theta_i \subset U_i$: if $p \in M \setminus U_i$, then $p$ has a neighbourhood on which $\theta_i=0$, so the zero extension agrees locally with the smooth zero function.
For every $p \in M$, using $\sum_{i=1}^N \theta_i(p)^2=1$ and the local frame expansion on each $U_i$ containing $p$, we obtain
\begin{align*}
s(p)=\sum_{i=1}^N \theta_i(p)^2s(p)=\sum_{i=1}^N\sum_{a=1}^k \theta_i(p)^2 f_{ia}(p)e_{ia}(p)=\sum_{i=1}^N\sum_{a=1}^k g_{ia}(p)\sigma_{ia}(p).
\end{align*}
Thus the finite set
\begin{align*}
\{\sigma_{ia}:1 \le i \le N,\ 1 \le a \le k\}
\end{align*}
generates $\Gamma(M,E)$ as an $A$-module.
[/step]
[step:Build a split surjection from a finite free module]
Let
\begin{align*}
F := A^{Nk}
\end{align*}
be the free $A$-module with basis elements $u_{ia}$ indexed by pairs $(i,a)$ with $1 \le i \le N$ and $1 \le a \le k$.
Define an $A$-[linear map](/page/Linear%20Map)
\begin{align*}
T: F &\to \Gamma(M,E)
\end{align*}
by specifying it on the basis:
\begin{align*}
T(u_{ia}) := \sigma_{ia}.
\end{align*}
Equivalently, for a tuple $(h_{ia})_{i,a} \in A^{Nk}$,
\begin{align*}
T((h_{ia})_{i,a}) = \sum_{i=1}^N \sum_{a=1}^k h_{ia}\sigma_{ia}.
\end{align*}
The previous step proves that $T$ is surjective.
Now define an $A$-linear map
\begin{align*}
S: \Gamma(M,E) &\to F
\end{align*}
as follows. Given $s \in \Gamma(M,E)$, let $f_{ia}:U_i \to \mathbb{R}$ be the unique local coefficient functions determined by
\begin{align*}
s(p)=\sum_{a=1}^k f_{ia}(p)e_{ia}(p)
\end{align*}
for $p \in U_i$. Let $h_{ia}:M \to \mathbb{R}$ be the smooth global function obtained by extending $\theta_i f_{ia}$ by zero outside $U_i$. Define
\begin{align*}
S(s) := (h_{ia})_{i,a}.
\end{align*}
The assignment $S$ is $A$-linear because local frame coefficients are $A$-linear under multiplication by smooth global functions: if $r \in A$ and $s \in \Gamma(M,E)$, then the local coefficients of $rs$ in the frame $e_{i1},\dots,e_{ik}$ are $(r|_{U_i})f_{ia}$.
For every $s \in \Gamma(M,E)$, the square-partition identity gives
\begin{align*}
(T \circ S)(s)=\sum_{i=1}^N \sum_{a=1}^k h_{ia}\sigma_{ia}=\sum_{i=1}^N \theta_i^2s=s.
\end{align*}
Therefore $T \circ S = \operatorname{id}_{\Gamma(M,E)}$.
[guided]
The goal is to prove projectivity, and the standard module-theoretic criterion is that a module is projective if it is a direct summand of a free module. We have already found finitely many generators $\sigma_{ia}$, so there is a natural finite free module mapping onto $\Gamma(M,E)$.
Let
\begin{align*}
F := A^{Nk}
\end{align*}
with basis vectors $u_{ia}$. Define
\begin{align*}
T:F &\to \Gamma(M,E)
\end{align*}
by
\begin{align*}
T(u_{ia})=\sigma_{ia}.
\end{align*}
Thus, for a tuple $(h_{ia})_{i,a}\in A^{Nk}$,
\begin{align*}
T((h_{ia})_{i,a})=\sum_{i=1}^N\sum_{a=1}^k h_{ia}\sigma_{ia}.
\end{align*}
Because the $\sigma_{ia}$ generate $\Gamma(M,E)$, this map is surjective.
To split $T$, we must assign to each section $s$ a tuple of smooth functions whose image under $T$ is exactly $s$. On $U_i$, expand $s$ in the local frame:
\begin{align*}
s(p)=\sum_{a=1}^k f_{ia}(p)e_{ia}(p), \qquad p \in U_i,
\end{align*}
where each $f_{ia}:U_i \to \mathbb{R}$ is smooth. Multiplying by $\theta_i$ localizes the coefficient to the region where the frame is valid. Since $\operatorname{supp}\theta_i \subset U_i$, the product $\theta_i f_{ia}$ extends by zero to a smooth function $h_{ia}:M \to \mathbb{R}$. The smoothness at points outside $U_i$ is justified as follows: every $p \in M \setminus U_i$ has a neighbourhood on which $\theta_i=0$, so the zero extension is locally the zero function there. Define
\begin{align*}
S(s):=(h_{ia})_{i,a}\in F.
\end{align*}
This assignment is $A$-linear. Indeed, if $r\in A$ and $s$ has local coefficients $f_{ia}$ on $U_i$, then $rs$ has local coefficients $(r|_{U_i})f_{ia}$, so the corresponding global coefficient functions are
\begin{align*}
\theta_i(r|_{U_i})f_{ia}=r(\theta_i f_{ia}).
\end{align*}
Hence $S(rs)=rS(s)$, and additivity follows from uniqueness of local frame coefficients.
Finally compute:
\begin{align*}
(T\circ S)(s)=\sum_{i=1}^N\sum_{a=1}^k h_{ia}\sigma_{ia}=\sum_{i=1}^N\sum_{a=1}^k \theta_i^2 f_{ia}e_{ia}=\sum_{i=1}^N \theta_i^2s=s.
\end{align*}
Thus $S$ is a right inverse to $T$, so the surjection from the free module $F$ onto $\Gamma(M,E)$ splits.
[/guided]
[/step]
[step:Conclude that the module of sections is finitely generated projective]
Since $T:F \to \Gamma(M,E)$ is an $A$-linear surjection and $S:\Gamma(M,E)\to F$ is an $A$-linear map with
\begin{align*}
T\circ S = \operatorname{id}_{\Gamma(M,E)},
\end{align*}
the map
\begin{align*}
P := S\circ T:F &\to F
\end{align*}
is an $A$-linear idempotent:
\begin{align*}
P^2 = S\circ T\circ S\circ T = S\circ \operatorname{id}_{\Gamma(M,E)}\circ T = P.
\end{align*}
Moreover, $S$ identifies $\Gamma(M,E)$ with $\operatorname{im}P \subset F$. Therefore
\begin{align*}
F = \operatorname{im}P \oplus \ker P
\end{align*}
as $A$-modules, so $\Gamma(M,E)$ is a direct summand of the finite free module $F=A^{Nk}$.
Hence $\Gamma(M,E)$ is projective. Since it is generated by the finite set $\{\sigma_{ia}:1 \le i \le N,\ 1 \le a \le k\}$, it is finitely generated. Therefore $\Gamma(M,E)$ is a finitely generated projective $C^\infty(M)$-module.
[/step]