diff --git a/static/CMakeLists.txt b/static/CMakeLists.txt
index 7353ccc..acfc8a8 100644
--- a/static/CMakeLists.txt
+++ b/static/CMakeLists.txt
@@ -60,48 +60,52 @@
 )
 
 set(STATIC_ASSETS_OUT "")
+set(MINIFIED_ASSETS_OUT "")
 foreach(JAVASCRIPT_ASSET ${JAVASCRIPT_ASSETS})
-    # if it's a debug build, don't minify
+
+    set(MINIFIED_FILENAME ${CMAKE_CURRENT_BINARY_DIR}/${JAVASCRIPT_ASSET})
+    get_filename_component(FOLDERNAME ${MINIFIED_FILENAME} DIRECTORY)
+    # string(REGEX REPLACE "(\\.[^.]*$)" ".min\\1" OUTPUT_FILENAME ${OUTPUT_FILENAME})
+    file(MAKE_DIRECTORY "${FOLDERNAME}")
+    add_custom_command(OUTPUT ${MINIFIED_FILENAME} 
+        COMMAND closure-compiler --language_in=ECMASCRIPT5
+        --js  "${CMAKE_CURRENT_SOURCE_DIR}/${JAVASCRIPT_ASSET}"
+        --js_output_file "${MINIFIED_FILENAME}"
+            --compilation_level SIMPLE_OPTIMIZATIONS
+            --angular_pass 
+        DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/${JAVASCRIPT_ASSET}"
+        COMMENT "Minifying ${JAVASCRIPT_ASSET}"
+    )
+
+    
+    list(APPEND MINIFIED_ASSETS_OUT ${MINIFIED_FILENAME})
+    # if it's a debug build, use the unminified version
     if (CMAKE_BUILD_TYPE STREQUAL "Debug")
         list(APPEND STATIC_ASSETS_OUT ${CMAKE_CURRENT_SOURCE_DIR}/${JAVASCRIPT_ASSET})
     else()
-        set(OUTPUT_FILENAME ${CMAKE_CURRENT_BINARY_DIR}/${JAVASCRIPT_ASSET})
-        get_filename_component(FOLDERNAME ${OUTPUT_FILENAME} DIRECTORY)
-        # string(REGEX REPLACE "(\\.[^.]*$)" ".min\\1" OUTPUT_FILENAME ${OUTPUT_FILENAME})
-        file(MAKE_DIRECTORY "${FOLDERNAME}")
-        # TODO only minify if not a debug build
-        add_custom_command(OUTPUT ${OUTPUT_FILENAME} 
-            COMMAND closure-compiler --language_in=ECMASCRIPT5
-            --js  "${CMAKE_CURRENT_SOURCE_DIR}/${JAVASCRIPT_ASSET}"
-            --js_output_file "${OUTPUT_FILENAME}"
-             --compilation_level SIMPLE_OPTIMIZATIONS
-             --angular_pass 
-            DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/${JAVASCRIPT_ASSET}"
-            COMMENT "Minifying ${JAVASCRIPT_ASSET}"
-        )
-        list(APPEND STATIC_ASSETS_OUT ${OUTPUT_FILENAME})
+        list(APPEND STATIC_ASSETS_OUT ${MINIFIED_FILENAME})
     endif (CMAKE_BUILD_TYPE STREQUAL "Debug")
 endforeach(JAVASCRIPT_ASSET)
 
 # for now CSS is included as is
 foreach(CSS_ASSET ${CSS_ASSETS})
-    # if it's a debug build, don't minify
+    set(MINIFIED_FILENAME ${CMAKE_CURRENT_BINARY_DIR}/${CSS_ASSET})
+    get_filename_component(FOLDERNAME ${MINIFIED_FILENAME} DIRECTORY)
+    file(MAKE_DIRECTORY "${FOLDERNAME}")
+    add_custom_command(OUTPUT ${MINIFIED_FILENAME} 
+        COMMAND cssnano 
+        "${CMAKE_CURRENT_SOURCE_DIR}/${CSS_ASSET}"
+        "${CMAKE_CURRENT_BINARY_DIR}/${CSS_ASSET}"
+
+        DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/${CSS_ASSET}"
+        COMMENT "Minifying ${CSS_ASSET}"
+    )
+    list(APPEND MINIFIED_ASSETS_OUT ${MINIFIED_FILENAME})
+    # if it's a debug build, use the unminified version
     if (CMAKE_BUILD_TYPE STREQUAL "Debug")
         list(APPEND STATIC_ASSETS_OUT ${CMAKE_CURRENT_SOURCE_DIR}/${CSS_ASSET})
     else()
-        set(OUTPUT_FILENAME ${CMAKE_CURRENT_BINARY_DIR}/${CSS_ASSET})
-        get_filename_component(FOLDERNAME ${OUTPUT_FILENAME} DIRECTORY)
-        file(MAKE_DIRECTORY "${FOLDERNAME}")
-        # TODO only minify if not a debug build
-        add_custom_command(OUTPUT ${OUTPUT_FILENAME} 
-            COMMAND cssnano 
-            "${CMAKE_CURRENT_SOURCE_DIR}/${CSS_ASSET}"
-            "${CMAKE_CURRENT_BINARY_DIR}/${CSS_ASSET}"
-
-            DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/${CSS_ASSET}"
-            COMMENT "Minifying ${CSS_ASSET}"
-        )
-        list(APPEND STATIC_ASSETS_OUT ${CMAKE_CURRENT_BINARY_DIR}/${CSS_ASSET})
+        list(APPEND STATIC_ASSETS_OUT ${MINIFIED_FILENAME})
     endif (CMAKE_BUILD_TYPE STREQUAL "Debug")
     
 endforeach(CSS_ASSET)
@@ -116,7 +120,12 @@
     list(APPEND STATIC_ASSETS_OUT ${CMAKE_CURRENT_SOURCE_DIR}/${OTHER_ASSET})
 endforeach(OTHER_ASSET)
 
-add_custom_target(minifyjs ALL DEPENDS ${STATIC_ASSETS_OUT})
+# this taret is the dependency that the build script uses to make sure everything is available
+add_custom_target(buildstatic ALL DEPENDS ${STATIC_ASSETS_OUT})
+
+# this target makes sure that assets are minified in debug builds, even if they aren't used
+add_custom_target(minifyassets ALL DEPENDS ${MINIFIED_ASSETS_OUT})
+
 
 file(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/generated)
 
