diff --git a/CMakeLists.txt b/CMakeLists.txt
index 28da614..5d46066 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -6,8 +6,21 @@ include(GNUInstallDirs)
 #============================================================================
 # Settable options
 #============================================================================
-option(WITH_TESTS "Build tests." OFF)
-option(WITH_EXAMPLE "Build example." OFF)
+
+# Check if docopt is being used directly or via add_subdirectory, but allow
+# overriding
+
+if(NOT DEFINED DOCOPT_MASTER_PROJECT)
+        if(CMAKE_CURRENT_SOURCE_DIR STREQUAL CMAKE_SOURCE_DIR)
+                set(DOCOPT_MASTER_PROJECT ON)
+        else()
+                set(DOCOPT_MASTER_PROJECT OFF)
+        endif()
+endif()
+
+option(WITH_INSTALL "Generate the install target" ${DOCOPT_MASTER_PROJECT})
+option(WITH_TESTS "Build tests." ${DOCOPT_MASTER_PROJECT})
+option(WITH_EXAMPLE "Build example." ${DOCOPT_MASTER_PROJECT})
 option(USE_BOOST_REGEX "Replace std::regex with Boost.Regex" OFF)
 
 #============================================================================
@@ -88,25 +101,28 @@ endif()
 #============================================================================
 # Install
 #============================================================================
-set(export_name "docopt-targets")
 
-# Runtime package
-install(TARGETS docopt EXPORT ${export_name}
-	RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
-	ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
-	LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
+if (WITH_INSTALL)
+	set(export_name "docopt-targets")
+
+	# Runtime package
+	install(TARGETS docopt EXPORT ${export_name}
+		RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
+		ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
+		LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
 
-# Development package
-install(FILES ${docopt_HEADERS} DESTINATION include/docopt)
+	# Development package
+	install(FILES ${docopt_HEADERS} DESTINATION include/docopt)
 
-# CMake Package
-include(CMakePackageConfigHelpers)
-write_basic_package_version_file("${PROJECT_BINARY_DIR}/docopt-config-version.cmake" COMPATIBILITY SameMajorVersion)
-install(FILES docopt-config.cmake ${PROJECT_BINARY_DIR}/docopt-config-version.cmake DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/docopt")
-install(EXPORT ${export_name} DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/docopt")
+	# CMake Package
+	include(CMakePackageConfigHelpers)
+	write_basic_package_version_file("${PROJECT_BINARY_DIR}/docopt-config-version.cmake" COMPATIBILITY SameMajorVersion)
+	install(FILES docopt-config.cmake ${PROJECT_BINARY_DIR}/docopt-config-version.cmake DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/docopt")
+	install(EXPORT ${export_name} DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/docopt")
 
-configure_file(${CMAKE_CURRENT_SOURCE_DIR}/docopt.pc.in ${CMAKE_CURRENT_BINARY_DIR}/docopt.pc @ONLY)
-install(FILES ${CMAKE_CURRENT_BINARY_DIR}/docopt.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
+	configure_file(${CMAKE_CURRENT_SOURCE_DIR}/docopt.pc.in ${CMAKE_CURRENT_BINARY_DIR}/docopt.pc @ONLY)
+	install(FILES ${CMAKE_CURRENT_BINARY_DIR}/docopt.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
+endif()
 
 #============================================================================
 # CPack