diff --git a/gexec/build.go b/gexec/build.go
index 220c8c4..e798900 100644
--- a/gexec/build.go
+++ b/gexec/build.go
@@ -28,6 +28,18 @@
 }
 
 /*
+BuildWithEnvironment is identical to Build but allows you to specify env vars to be set at build time.
+*/
+func BuildWithEnvironment(packagePath string, env map[string]string, args ...string) (compiledPath string, err error) {
+	for key, val := range env {
+		os.Setenv(key, val)
+		defer os.Unsetenv(key)
+	}
+
+	return BuildIn(os.Getenv("GOPATH"), packagePath, args...)
+}
+
+/*
 BuildIn is identical to Build but allows you to specify a custom $GOPATH (the first argument).
 */
 func BuildIn(gopath string, packagePath string, args ...string) (compiledPath string, err error) {
diff --git a/gexec/build_test.go b/gexec/build_test.go
index 7bd62fe..a2f1ccd 100644
--- a/gexec/build_test.go
+++ b/gexec/build_test.go
@@ -1,14 +1,16 @@
 package gexec_test
 
 import (
+	"os"
+
 	. "github.com/onsi/ginkgo"
 	. "github.com/onsi/gomega"
 	"github.com/onsi/gomega/gexec"
 )
 
-var _ = Describe(".Build", func() {
-	var packagePath = "./_fixture/firefly"
+var packagePath = "./_fixture/firefly"
 
+var _ = Describe(".Build", func() {
 	Context("when there have been previous calls to Build", func() {
 		BeforeEach(func() {
 			_, err := gexec.Build(packagePath)
@@ -35,3 +37,31 @@
 		})
 	})
 })
+
+var _ = Describe(".BuildWithEnvironment", func() {
+	var err error
+
+	It("compiles the specified package with the specified env vars", func() {
+		env := map[string]string{
+			"GOOS":   "linux",
+			"GOARCH": "amd64",
+		}
+
+		compiledPath, err := gexec.BuildWithEnvironment(packagePath, env)
+		Ω(err).ShouldNot(HaveOccurred())
+		Ω(compiledPath).Should(BeAnExistingFile())
+	})
+
+	It("returns the environment to a good state", func() {
+		knownGoodEnv := os.Environ()
+
+		env := map[string]string{
+			"THIS_ENV_VAR": "SHOULD_NOT_BE_SET",
+		}
+
+		_, err = gexec.BuildWithEnvironment(packagePath, env)
+		Ω(err).ShouldNot(HaveOccurred())
+
+		Ω(os.Environ()).Should(Equal(knownGoodEnv))
+	})
+})
