diff --git a/build-cmake/CMakeLists.txt b/build-cmake/CMakeLists.txt
index bc1728f..7c6a04d 100644
--- a/build-cmake/CMakeLists.txt
+++ b/build-cmake/CMakeLists.txt
@@ -61,11 +61,15 @@ if (MSVC AND MSVC_STATIC_BUILD)
 	  endif(${flag_var} MATCHES "/MD")
 	endforeach(flag_var)
 endif (MSVC AND MSVC_STATIC_BUILD)
+
+IF(WITH_TOOLS)
 FILE(GLOB PROTOC_GEN_C_SRC ${MAIN_DIR}/protoc-c/*.h ${MAIN_DIR}/protoc-c/*.cc )
 ADD_EXECUTABLE(protoc-gen-c ${PROTOC_GEN_C_SRC})
 
 TARGET_LINK_LIBRARIES(protoc-gen-c ${PROTOBUF_PROTOC_LIBRARY} ${PROTOBUF_LIBRARY})
+ENDIF()
 
+IF(WITH_TEST AND WITH_TOOLS)
 IF(CMAKE_HOST_UNIX)
 ADD_CUSTOM_COMMAND(TARGET ${PROJECT_NAME} POST_BUILD
                    COMMAND ln -sf protoc-gen-c protoc-c
@@ -79,8 +83,6 @@ FUNCTION(GENERATE_TEST_SOURCES PROTO_FILE SRC HDR)
                    DEPENDS protoc-gen-c)
 ENDFUNCTION()
 
-
-IF(CMAKE_BUILD_TYPE MATCHES Debug)
 ENABLE_TESTING()
 
 GENERATE_TEST_SOURCES(${TEST_DIR}/test.proto t/test.pb-c.c t/test.pb-c.h)
@@ -126,17 +128,17 @@ GENERATE_TEST_SOURCES(${TEST_DIR}/test-proto3.proto t/test-proto3.pb-c.c t/test-
 ADD_EXECUTABLE(test-generated-code3 ${TEST_DIR}/generated-code/test-generated-code.c t/test-proto3.pb-c.c t/test-proto3.pb-c.h)
 TARGET_COMPILE_DEFINITIONS(test-generated-code3 PUBLIC -DPROTO3)
 TARGET_LINK_LIBRARIES(test-generated-code3 protobuf-c)
-
 ENDIF()
 
-INSTALL(TARGETS protoc-gen-c protobuf-c RUNTIME DESTINATION bin LIBRARY DESTINATION lib ARCHIVE DESTINATION lib)
-INSTALL(FILES ${MAIN_DIR}/protobuf-c/protobuf-c.h DESTINATION include/protobuf-c)
-INSTALL(FILES ${MAIN_DIR}/protobuf-c/protobuf-c.h DESTINATION include)
+IF (WITH_TOOLS)
+INSTALL(TARGETS protoc-gen-c RUNTIME DESTINATION tools LIBRARY DESTINATION lib ARCHIVE DESTINATION lib)
+ENDIF()
 
 IF(CMAKE_HOST_UNIX)
 INSTALL(CODE "EXECUTE_PROCESS (COMMAND ln -sf protoc-gen-c protoc-c WORKING_DIRECTORY ${CMAKE_INSTALL_PREFIX}/bin)")
 ENDIF()
 
+IF (WITH_TEST)
 INCLUDE(Dart)
 
 SET(DART_TESTING_TIMEOUT 5)
@@ -147,5 +149,10 @@ ADD_TEST(test-issue220 test-issue220)
 ADD_TEST(test-issue251 test-issue251)
 ADD_TEST(test-version test-version)
 
+ENDIF()
+
+INSTALL(TARGETS protobuf-c RUNTIME DESTINATION bin LIBRARY DESTINATION lib ARCHIVE DESTINATION lib)
+INSTALL(FILES ${MAIN_DIR}/protobuf-c/protobuf-c.h DESTINATION include/protobuf-c)
+INSTALL(FILES ${MAIN_DIR}/protobuf-c/protobuf-c.h DESTINATION include)
 
 INCLUDE(CPack)
