diff --git a/Setup.hs b/Setup.hs
--- a/Setup.hs
+++ b/Setup.hs
@@ -35,6 +35,7 @@
   )
 import Distribution.Simple.Program (
   Program,
+  ProgramConfiguration,
   getProgramOutput,
   lookupProgram,
   runDbProgram,
@@ -87,6 +88,7 @@
 import System.Environment (lookupEnv, setEnv)
 import System.FilePath ((</>), takeDirectory)
 import System.Posix (createSymbolicLink, getSymbolicLinkStatus)
+import System.Process (callProcess)
 
 packageName :: String
 -- Careful, this line is modified by set-qt-version.sh.
@@ -97,7 +99,7 @@
 
 qtahHooks :: UserHooks
 qtahHooks = simpleUserHooks
-  { hookedPrograms = [generatorProgram, listenerGenProgram, makeProgram, qmakeProgram]
+  { hookedPrograms = [generatorProgram, listenerGenProgram, makeProgram]
   , postConf = \_ cf _ lbi -> do generateSources cf lbi
   , buildHook = \pd lbi uh bf -> do doBuild lbi bf
                                     buildHook simpleUserHooks pd lbi uh bf
@@ -123,8 +125,17 @@
 makeProgram :: Program
 makeProgram = simpleProgram "make"
 
-qmakeProgram :: Program
-qmakeProgram = simpleProgram "qmake"
+findQmake :: ProgramConfiguration -> Verbosity -> IO (FilePath, [String])
+findQmake programDb verbosity = do
+  generatorConfiguredProgram <-
+    maybe (die $ packageName ++ ": Couldn't find qtah-generator.  Is it installed?") return $
+    lookupProgram generatorProgram programDb
+  output <- fmap lines $
+            getProgramOutput verbosity generatorConfiguredProgram ["--qmake-executable"]
+  case output of
+    executable:args -> return (executable, args)
+    [] -> fail $ packageName ++
+          ": Couldn't ask qtah-generator for the location of qmake.  Received no output."
 
 generateSources :: ConfigFlags -> LocalBuildInfo -> IO ()
 generateSources configFlags localBuildInfo = do
@@ -143,7 +154,8 @@
 
   -- Run qmake to generate the makefile.
   setCurrentDirectory cppSourceDir
-  runDbProgram verbosity qmakeProgram programDb ["qtah.pro"]
+  (qmakeExecutable, qmakeArguments) <- findQmake programDb verbosity
+  callProcess qmakeExecutable $ qmakeArguments ++ ["qtah.pro"]
 
   setCurrentDirectory startDir
 
@@ -186,7 +198,7 @@
 
   -- Install the built library into the package's libdir.
   createDirectoryIfMissing True libDir
-  forM_ ["libqtah.so", "libqtah.so.0", "libqtah.so.0.1", "libqtah.so.0.1.2"] $ \p -> do
+  forM_ ["libqtah.so", "libqtah.so.0", "libqtah.so.0.2", "libqtah.so.0.2.0"] $ \p -> do
     let path = libDir </> p
     shouldDelete <-
       catchIOError (do _ <- getSymbolicLinkStatus path
@@ -194,10 +206,10 @@
       (\e -> if isDoesNotExistError e then return False else ioError e)
     when shouldDelete $ removeFile path
   installExecutableFile verbosity
-                        (cppSourceDir </> "libqtah.so.0.1.2")
-                        (libDir </> "libqtah.so.0.1.2")
-  createSymbolicLink "libqtah.so.0.1.2" (libDir </> "libqtah.so.0.1")
-  createSymbolicLink "libqtah.so.0.1" (libDir </> "libqtah.so.0")
+                        (cppSourceDir </> "libqtah.so.0.2.0")
+                        (libDir </> "libqtah.so.0.2.0")
+  createSymbolicLink "libqtah.so.0.2.0" (libDir </> "libqtah.so.0.2")
+  createSymbolicLink "libqtah.so.0.2" (libDir </> "libqtah.so.0")
   createSymbolicLink "libqtah.so.0" (libDir </> "libqtah.so")
 
   -- Also record what version of Qt we are using, so that qtah can check that
diff --git a/cpp/qtah.pro b/cpp/qtah.pro
--- a/cpp/qtah.pro
+++ b/cpp/qtah.pro
@@ -21,7 +21,7 @@
 
 TARGET = qtah
 TEMPLATE = lib
-VERSION = 0.1.2
+VERSION = 0.2.0
 # Doesn't seem to work here: CONFIG += c++11
 QMAKE_CXXFLAGS += -std=c++11
 
diff --git a/qtah-cpp-qt5.cabal b/qtah-cpp-qt5.cabal
--- a/qtah-cpp-qt5.cabal
+++ b/qtah-cpp-qt5.cabal
@@ -1,5 +1,5 @@
 name: qtah-cpp-qt5
-version: 0.1.2
+version: 0.2.0
 synopsis: Qt bindings for Haskell - C++ library
 homepage: http://khumba.net/projects/qtah
 license: LGPL-3
@@ -36,5 +36,6 @@
   exposed-modules: Graphics.UI.Qtah.NothingToSeeHere
   build-depends:
       base >=4 && <5
-    , qtah-generator >=0.1 && <0.2
+    , process >=1.2 && <1.5
+    , qtah-generator >=0.2 && <0.3
   ghc-options: -W -fwarn-incomplete-patterns -fwarn-unused-do-bind
