diff --git a/CMakeLists.txt b/CMakeLists.txt
index 3991219..f9e172b 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,21 +1,11 @@
-cmake_minimum_required(VERSION 2.8.12)
-
-if(POLICY CMP0042)
-	cmake_policy(SET CMP0042 NEW)
-endif()
-
-if(POLICY CMP0048)
-    cmake_policy(SET CMP0048 OLD)
-endif()
-
-project(chromaprint C CXX)
+cmake_minimum_required(VERSION 3.3)
 
 set(chromaprint_VERSION_MAJOR 1)
 set(chromaprint_VERSION_MINOR 4)
 set(chromaprint_VERSION_PATCH 3)
 set(chromaprint_VERSION "${chromaprint_VERSION_MAJOR}.${chromaprint_VERSION_MINOR}.${chromaprint_VERSION_PATCH}")
 
-set(PROJECT_VERSION "${chromaprint_VERSION}")
+project(chromaprint LANGUAGES C CXX VERSION "${chromaprint_VERSION}")
 
 set(chromaprint_SOVERSION 1)
 
@@ -31,14 +21,14 @@ include(CheckCXXCompilerFlag)
 
 find_package(Threads)
 
-check_cxx_compiler_flag("-std=c++11" COMPILER_SUPPORTS_CXX11)
-if(COMPILER_SUPPORTS_CXX11)
-	set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
-endif()
+option(BUILD_SHARED_LIBS "Build shared libraries" ON)
 
-if(CMAKE_COMPILER_IS_GNUCXX AND BUILD_SHARED_LIBS)
-	set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fvisibility=hidden -fvisibility-inlines-hidden")
-	set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fvisibility=hidden")
+set(CMAKE_CXX_STANDARD 11)
+
+if(BUILD_SHARED_LIBS)
+	set(CMAKE_C_VISIBILITY_PRESET hidden)
+	set(CMAKE_CXX_VISIBILITY_PRESET hidden)
+	set(CMAKE_VISIBILITY_INLINES_HIDDEN ON)
 endif()
 
 if(CMAKE_COMPILER_IS_GNUCXX AND CMAKE_BUILD_TYPE STREQUAL "Debug")
@@ -70,7 +60,6 @@ if(APPLE)
 	set(FRAMEWORK_INSTALL_DIR "/Library/Frameworks" CACHE STRING "Directory to install frameworks to")
 endif()
 
-option(BUILD_SHARED_LIBS "Build shared libraries" ON)
 option(BUILD_TOOLS "Build command line tools" OFF)
 option(BUILD_TESTS "Build test suite" OFF)
 
