diff --git a/CMakeLists.txt b/CMakeLists.txt
index a2af673ed95f33d5f49185fd1dae5bcddac3d4e5..bcb6e6156b33beffec22d4c5532c463d2f06fca8 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -134,6 +134,9 @@ if(WITH_TESTS)
     list(APPEND copyq_LIBRARIES Qt5::Test)
 endif()
 
+include(version.cmake)
+message(STATUS "Building CopyQ version ${copyq_version}.")
+
 # Generate version.h from current git commit if available.
 add_custom_target(
     generate_version_header
@@ -141,7 +144,7 @@ add_custom_target(
     COMMAND ${CMAKE_COMMAND}
         -D INPUT_FILE=${CMAKE_CURRENT_SOURCE_DIR}/src/common/version.h.in
         -D OUTPUT_FILE=${CMAKE_CURRENT_BINARY_DIR}/src/common/version.h
-        -P ${CMAKE_CURRENT_SOURCE_DIR}/version.cmake
+        -P ${CMAKE_CURRENT_SOURCE_DIR}/version_header.cmake
     BYPRODUCTS ${CMAKE_CURRENT_BINARY_DIR}/src/common/version.h
     WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
 )
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index ba279163e408e2198aea3fc805576ae7be7e1eef..34790eea9fb51f5b3be7b906a9c55dfa5d5e8844 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -60,6 +60,10 @@ set(copyq_COMPILE
     ${copyq_QM}
     )
 
+if (NOT copyq_version)
+    message(FATAL_ERROR "Application version is unset")
+endif()
+
 if (NOT APPLE)
     add_executable(${COPYQ_EXECUTABLE_NAME} ${copyq_COMPILE})
 else()
diff --git a/version.cmake b/version.cmake
index 628c28b99ec57c22d5fc73af6877347f87ac1ce9..8a786f7d1fcfdc2814f1d94e80d7f3baa81e9418 100644
--- a/version.cmake
+++ b/version.cmake
@@ -20,7 +20,3 @@ else()
         endif()
     endif()
 endif()
-
-message(STATUS "Building CopyQ version ${copyq_version}.")
-
-configure_file("${INPUT_FILE}" "${OUTPUT_FILE}")
diff --git a/version_header.cmake b/version_header.cmake
new file mode 100644
index 0000000000000000000000000000000000000000..0229f0d6378abaff8b88e0e0e81012c69779c892
--- /dev/null
+++ b/version_header.cmake
@@ -0,0 +1,2 @@
+include(version.cmake)
+configure_file("${INPUT_FILE}" "${OUTPUT_FILE}")