diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,9 @@
 # ats-pkg
 
+## 3.3.0.5
+
+  * Only run `cmake` when it exists
+
 ## 3.3.0.4
 
   * Fixes for Mac
diff --git a/ats-pkg.cabal b/ats-pkg.cabal
--- a/ats-pkg.cabal
+++ b/ats-pkg.cabal
@@ -1,6 +1,6 @@
 cabal-version:      2.0
 name:               ats-pkg
-version:            3.3.0.4
+version:            3.3.0.5
 license:            BSD3
 license-file:       LICENSE
 copyright:          Copyright: (c) 2018-2019 Vanessa McHale
@@ -83,7 +83,7 @@
         dhall >=1.15.0,
         ansi-wl-pprint -any,
         shake-ats >=1.10.2.0,
-        shake-ext >=3.0.0.0,
+        shake-ext >=3.1.1.0,
         shake-c >=0.4.0.0,
         zip-archive -any,
         ansi-wl-pprint -any,
diff --git a/src/Language/ATS/Package/Build/C.hs b/src/Language/ATS/Package/Build/C.hs
--- a/src/Language/ATS/Package/Build/C.hs
+++ b/src/Language/ATS/Package/Build/C.hs
@@ -5,6 +5,7 @@
 
 import           Development.Shake.ATS
 import           Development.Shake.C
+import qualified Development.Shake.Check as Check
 import           GHC.Conc
 import           Quaalude
 
@@ -54,7 +55,9 @@
 cmake _ _ Nothing _ _ = mempty
 cmake v prefixPath (Just cfgLists) _ _ = do
     let p = takeDirectory cfgLists
-    silentCreateProcess v ((proc "cmake" ["-DCMAKE_INSTALL_PREFIX:PATH=" ++ prefixPath, p]) { cwd = Just p })
+    cmakeB <- Check.cmake
+    when cmakeB $
+        silentCreateProcess v ((proc "cmake" ["-DCMAKE_INSTALL_PREFIX:PATH=" ++ prefixPath, p]) { cwd = Just p })
 
 configure :: Verbosity -> FilePath -> FilePath -> Maybe [(String, String)] -> String -> FilePath -> IO ()
 configure v prefixPath configurePath procEnv lib' p =
