support slightly more modern cmake
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..24b0b1d
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+/build* # cmake
diff --git a/CMakeLists.txt b/CMakeLists.txt
index be131b1..ee5e7bc 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,6 +1,46 @@
-cmake_minimum_required(VERSION 2.6)
-project(xbyak)
+cmake_minimum_required(VERSION 2.6...3.0.2)
+
+project(xbyak CXX)
 
 file(GLOB headers xbyak/*.h)
-install(FILES ${headers} DESTINATION include/xbyak)
 
+if (DEFINED CMAKE_VERSION AND CMAKE_VERSION VERSION_GREATER_EQUAL 3.0.2)
+	include(GNUInstallDirs)
+	add_library(${PROJECT_NAME} INTERFACE ${headers})
+	add_library(${PROJECT_NAME}::${PROJECT_NAME} ALIAS ${PROJECT_NAME})
+	
+	target_include_directories(
+		${PROJECT_NAME} INTERFACE
+		"$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/xbyak>"
+		"$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>"
+	)
+
+	install(
+		TARGETS ${PROJECT_NAME}
+		EXPORT ${PROJECT_NAME}-targets
+	)
+
+	configure_file(
+		cmake/config.cmake.in
+		${PROJECT_NAME}Config.cmake
+		@ONLY
+	)
+
+	install(
+		FILES ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake
+		DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}
+	)
+
+	install(
+		EXPORT ${PROJECT_NAME}-targets
+		NAMESPACE ${PROJECT_NAME}::
+		DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}
+	)
+elseif(NOT DEFINED CMAKE_INSTALL_INCLUDEDIR)
+	set(CMAKE_INSTALL_INCLUDEDIR "include")
+endif()
+
+install(
+	FILES ${headers}
+	DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/xbyak
+)
diff --git a/cmake/config.cmake.in b/cmake/config.cmake.in
new file mode 100644
index 0000000..f40ebfa
--- /dev/null
+++ b/cmake/config.cmake.in
@@ -0,0 +1 @@
+include("${CMAKE_CURRENT_LIST_DIR}/@PROJECT_NAME@-targets.cmake")