diff --git a/compiler/cpp/CMakeLists.txt b/compiler/cpp/CMakeLists.txt
new file mode 100644
index 0000000..5275a92
--- /dev/null
+++ b/compiler/cpp/CMakeLists.txt
@@ -0,0 +1,146 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+
+
+cmake_minimum_required(VERSION 2.8)
+
+project(thrift-compiler)
+
+# TODO: Where to get correct version information
+set(thrift_VERSION_MAJOR 0)
+set(thrift_VERSION_MINOR 9)
+set(thrift_VERSION_PATCH 2)
+set(thrift_VERSION "${thrift_VERSION_MAJOR}.${thrift_VERSION_MINOR}.${thrift_VERSION_PATCH}")
+
+# The following variable is used in the version.h.in file
+set(PACKAGE_VERSION ${thrift_VERSION})
+
+# Windows has a different header
+if(WIN32)
+    set(FLEX_FLAGS "--wincompat") # Don't use unistd.h on windows
+    configure_file(${CMAKE_CURRENT_SOURCE_DIR}/src/windows/version.h.in ${CMAKE_CURRENT_BINARY_DIR}/version.h)
+else()
+    set(FLEX_FLAGS " ")
+    configure_file(${CMAKE_CURRENT_SOURCE_DIR}/version.h.in ${CMAKE_CURRENT_BINARY_DIR}/version.h)
+endif()
+
+find_package(FLEX REQUIRED)
+find_package(BISON REQUIRED)
+
+# Create flex and bison files and build the lib parse static library
+BISON_TARGET(thrifty ${CMAKE_CURRENT_SOURCE_DIR}/src/thrifty.yy ${CMAKE_CURRENT_BINARY_DIR}/thrifty.cc)
+FLEX_TARGET(thriftl ${CMAKE_CURRENT_SOURCE_DIR}/src/thriftl.ll ${CMAKE_CURRENT_BINARY_DIR}/thriftl.cc COMPILE_FLAGS ${FLEX_FLAGS})
+ADD_FLEX_BISON_DEPENDENCY(thriftl thrifty)
+
+# HACK: Work around the fact that bison crates a .hh file but we need a .h file
+add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/thrifty.h
+                   COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/thrifty.hh ${CMAKE_CURRENT_BINARY_DIR}/thrifty.h
+                   DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/thrifty.hh
+                   )
+
+set(libparse_SOURCES
+    ${CMAKE_CURRENT_BINARY_DIR}/thrifty.cc
+    ${CMAKE_CURRENT_BINARY_DIR}/thriftl.cc
+    ${CMAKE_CURRENT_BINARY_DIR}/thrifty.h
+)
+
+add_library(libparse STATIC ${libparse_SOURCES})
+
+# Create the thrift compiler
+set( thrift_SOURCES 
+    src/main.cc
+    src/md5.c
+    src/generate/t_generator.cc
+    src/generate/t_generator_registry.h
+    src/globals.h
+    src/main.h
+    src/platform.h
+    src/md5.h
+    src/parse/t_doc.h
+    src/parse/t_type.h
+    src/parse/t_base_type.h
+    src/parse/t_enum.h
+    src/parse/t_enum_value.h
+    src/parse/t_typedef.h
+    src/parse/t_typedef.cc
+    src/parse/t_container.h
+    src/parse/t_list.h
+    src/parse/t_set.h
+    src/parse/t_map.h
+    src/parse/t_struct.h
+    src/parse/t_field.h
+    src/parse/t_service.h
+    src/parse/t_function.h
+    src/parse/t_program.h
+    src/parse/t_scope.h
+    src/parse/t_const.h
+    src/parse/t_const_value.h
+    src/parse/parse.cc
+    src/generate/t_generator.h
+    src/generate/t_oop_generator.h
+    src/generate/t_html_generator.h
+    src/windows/config.h
+    version.h
+)
+
+# This macro adds an option THRIFT_COMPILER_${NAME}
+# that allows enabling or disabling certain languages
+macro(THRIFT_ADD_COMPILER name description initial)
+    string(TOUPPER "THRIFT_COMPILER_${name}" enabler)
+    set(src "src/generate/t_${name}_generator.cc")
+    option(${enabler} ${description} ${initial})
+    if(${enabler})
+        list(APPEND thrift_SOURCES ${src})
+    endif()
+endmacro()
+
+# The following compiler can be enabled or disabled
+THRIFT_ADD_COMPILER(c_glib  "Enable compiler for C with Glib" ON)
+THRIFT_ADD_COMPILER(cpp     "Enable compiler for C++" ON)
+THRIFT_ADD_COMPILER(java    "Enable compiler for Java"   ON)
+THRIFT_ADD_COMPILER(as3     "Enable compiler for ActionScript 3" ON)
+THRIFT_ADD_COMPILER(csharp  "Enable compiler for C#" ON)
+THRIFT_ADD_COMPILER(py      "Enable compiler for Python 2.0" ON)
+THRIFT_ADD_COMPILER(rb      "Enable compiler for Ruby" ON)
+THRIFT_ADD_COMPILER(perl    "Enable compiler for Perl" ON)
+THRIFT_ADD_COMPILER(php     "Enable compiler for PHP" ON)
+THRIFT_ADD_COMPILER(erl     "Enable compiler for Erlang" ON)
+THRIFT_ADD_COMPILER(cocoa   "Enable compiler for Cocoa Objective-C" ON)
+THRIFT_ADD_COMPILER(st      "Enable compiler for Smalltalk" ON)
+THRIFT_ADD_COMPILER(ocaml   "Enable compiler for OCaml" ON)
+THRIFT_ADD_COMPILER(hs      "Enable compiler for Haskell" ON)
+THRIFT_ADD_COMPILER(xsd     "Enable compiler for XSD" ON)
+THRIFT_ADD_COMPILER(html    "Enable compiler for HTML Documentation" ON)
+THRIFT_ADD_COMPILER(js      "Enable compiler for JavaScript" ON)
+THRIFT_ADD_COMPILER(javame  "Enable compiler for Java ME" ON)
+THRIFT_ADD_COMPILER(delphi  "Enable compiler for Delphi" ON)
+THRIFT_ADD_COMPILER(go      "Enable compiler for Go" ON)
+THRIFT_ADD_COMPILER(d       "Enable compiler for D" ON)
+THRIFT_ADD_COMPILER(lua     "Enable compiler for Lua" ON)
+
+# Thrift is looking for include files in the src directory
+# we also add the current binary directory for generated files
+include_directories(${CMAKE_CURRENT_BINARY_DIR} src)
+
+add_executable(thrift ${thrift_SOURCES})
+target_link_libraries(thrift libparse)
+
+if(NOT WIN32)
+    install(TARGETS thrift DESTINATION bin)
+endif()
diff --git a/compiler/cpp/README.md b/compiler/cpp/README.md
index e69de29..452a49c 100644
--- a/compiler/cpp/README.md
+++ b/compiler/cpp/README.md
@@ -0,0 +1,19 @@
+# Build compiler using CMake
+
+Use the following steps to build using cmake
+
+mkdir build
+cd build
+cmake ..
+make
+
+## Build on windows
+
+In order to build on windows a few additional steps are necessary
+
+1. Download winflexbison from http://sourceforge.net/projects/winflexbison/
+2. Extract the winflex bison files to for e.g. C:\winflexbison
+3. Make the CMake variables point to the correct binaries.
+  * FLEX_EXECUTBALE = C:/winbuild/win_flex.exe
+  * BISON_EXECUTBALE = C:/winbuild/win_bison.exe
+
