diff --git a/.appveyor.yml b/.appveyor.yml
index 8a78fd872..6d4f5b5e6 100644
--- a/.appveyor.yml
+++ b/.appveyor.yml
@@ -5,12 +5,17 @@ branches:
 install:
   - set PATH=C:\Python36;%PATH%
   - cmake --version
+  - pip install conan
+  - conan user
+  - conan --version
 
 build_script:
   - mkdir build
   - cd build
   - cmake .. -DCLI_SINGLE_FILE_TESTS=ON -DCMAKE_BUILD_TYPE=Debug -DCMAKE_GENERATOR="Visual Studio 14 2015"
   - cmake --build .
+  - cd ..
+  - conan create . CLIUtils/CLI11
 
 test_script:
   - ctest --output-on-failure -C Debug
diff --git a/.ci/run_codecov.sh b/.ci/run_codecov.sh
index 2272459dc..cd7219a8c 100755
--- a/.ci/run_codecov.sh
+++ b/.ci/run_codecov.sh
@@ -1,6 +1,7 @@
 set -evx
 
 cd ${TRAVIS_BUILD_DIR}
+mkdir -p build
 cd build
 cmake .. -DCLI_SINGLE_FILE_TESTS=OFF -DCLI_EXAMPLES=OFF -DCMAKE_BUILD_TYPE=Coverage
 cmake --build . -- -j2
diff --git a/.gitignore b/.gitignore
index dac96bf8c..66ead1a57 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,6 +1,7 @@
 a.out*
 *.swp
 /*build*
+/test_package/build
 /Makefile
 /CMakeFiles/*
 /cmake_install.cmake
diff --git a/.travis.yml b/.travis.yml
index b1275c806..747d88d25 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -30,8 +30,11 @@ matrix:
         - clang-tidy-3.9
     env:
     - COMPILER=3.9
-    - CHECK_STYLE=yes
     - CLI_CXX_STD=14
+    script:
+    - cd "${TRAVIS_BUILD_DIR}"
+    - scripts/check_style.sh
+    - .ci/check_tidy.sh
   - compiler: clang
     addons:
       apt:
@@ -39,8 +42,13 @@ matrix:
         - clang-3.5
     env:
     - COMPILER=3.5
-    - DEPLOY_MAT=yes
     - DOXYFILE=$TRAVIS_BUILD_DIR/docs/Doxyfile
+    after_success:
+    - |
+      if [ "${TRAVIS_BRANCH}" == "master" ] && [ "${TRAVIS_PULL_REQUEST}" == "false" ]
+      then
+        echo "Updating docs" && cd $TRAVIS_BUILD_DIR && .ci/build_docs.sh
+      fi
   - compiler: gcc
     addons:
       apt:
@@ -52,8 +60,12 @@ matrix:
         - lcov
     env:
     - COMPILER=6
-    - COVERALLS=yes
     - CLI_CXX_STD=14
+    before_install:
+    - DEPS_DIR="${TRAVIS_BUILD_DIR}/deps"
+    - cd $TRAVIS_BUILD_DIR 
+    - . .ci/build_lcov.sh
+    - .ci/run_codecov.sh
   - compiler: gcc
     addons:
       apt:
@@ -61,38 +73,34 @@ matrix:
         - g++-4.7
     env:
     - COMPILER=4.7
+    before_install:
+    - python -m pip install --user conan
+    - conan user
+    after_success:
+    - conan create . CLIUtils/CLI11
   - os: osx
+    compiler: clang
     before_install:
+    - brew update
+    - echo 'brew "python"' > Brewfile
+    - echo 'brew "conan"' >> Brewfile
+    - brew bundle
     - python -m ensurepip --user
+    - conan user
+    after_success:
+    - conan create . CLIUtils/CLI11
 install:
 - python -c 'import sys; print(sys.version_info[:])'
 - DEPS_DIR="${TRAVIS_BUILD_DIR}/deps"
 - if [ "$TRAVIS_OS_NAME" = "linux" ]; then cd $TRAVIS_BUILD_DIR && . .ci/prepare_altern.sh ; fi
 - if [ "$TRAVIS_OS_NAME" = "linux" ] ; then cd $TRAVIS_BUILD_DIR && . .ci/build_cmake.sh ; fi
 - if [ "$TRAVIS_OS_NAME" = "linux" ] ; then cd $TRAVIS_BUILD_DIR && . .ci/build_doxygen.sh ; fi
-- if [ -n "$COVERALLS" ] ; then cd $TRAVIS_BUILD_DIR && . .ci/build_lcov.sh ; fi
 - cd "${DEPS_DIR}"
 - if [ "$(python -c 'import sys; print(sys.version_info[0])')" = "2" ] ; then python -m pip install --user pathlib ; fi
 - cmake --version
 script:
 - cd "${TRAVIS_BUILD_DIR}"
-- |
-  if [ -n "$CHECK_STYLE" ]
-  then
-    scripts/check_style.sh
-    .ci/check_tidy.sh
-  else
-    .ci/travis.sh
-  fi
-after_success:
-- if [ -n "$COVERALLS" ] ; then cd $TRAVIS_BUILD_DIR && .ci/run_codecov.sh ; fi
-- echo "${TRAVIS_BRANCH}"
-- echo "${TRAVIS_PULL_REQUEST}"
-- |
-  if [ "${TRAVIS_BRANCH}" == "master" ] && [ "${TRAVIS_PULL_REQUEST}" == "false" ] && [ -n "$DEPLOY_MAT" ]
-  then
-    echo "Updating docs" && cd $TRAVIS_BUILD_DIR && .ci/build_docs.sh
-  fi
+- .ci/travis.sh
 deploy:
   provider: releases
   api_key:
diff --git a/CMakeLists.txt b/CMakeLists.txt
index ea0164e63..6ae22de17 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,8 +1,8 @@
 cmake_minimum_required(VERSION 3.4 FATAL_ERROR)
 
-project(CLI11 CXX)
+project(CLI11 LANGUAGES CXX)
 
-SET(CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake" ${CMAKE_MODULE_PATH})
+SET(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake" ${CMAKE_MODULE_PATH})
 
 set(CLI_CXX_STD "11"  CACHE STRING "The CMake standard to require")
 
@@ -51,10 +51,43 @@ endif()
 
 file(GLOB CLI_headers "${CMAKE_CURRENT_SOURCE_DIR}/include/CLI/*")
 # To see in IDE, must be listed for target
+
 add_library(CLI11 INTERFACE)
-target_include_directories(CLI11 INTERFACE "${CMAKE_CURRENT_SOURCE_DIR}/include")
+
+# Duplicated because CMake adds the current source dir if you don't.
+target_include_directories(CLI11 INTERFACE
+     $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
+     $<INSTALL_INTERFACE:include>)
+
+# Make add_subdirectory work like find_package
+add_library(CLI11::CLI11 ALIAS CLI11)
+
+# This folder should be installed
 install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/include/CLI DESTINATION include)
 
+# Use find_package on the installed package
+# Since we have no custom code, we can directly write this
+# to Config.cmake (otherwise we'd have a custom config and would
+# import Targets.cmake
+
+# Make an export target
+install(TARGETS CLI11
+        EXPORT CLI11Targets)
+
+# Install the export target as a file
+install(EXPORT CLI11Targets
+        FILE CLI11Config.cmake
+        NAMESPACE CLI11::
+        DESTINATION lib/cmake/CLI11)
+
+# Use find_package on the installed package
+export(TARGETS CLI11
+       NAMESPACE CLI11::
+       FILE CLI11Targets.cmake)
+
+# Register in the user cmake package registry
+export(PACKAGE CLI11)
+
 # Single file test
 find_package(PythonInterp)
 if(CUR_PROJ AND PYTHONINTERP_FOUND)
diff --git a/cmake/AddGoogletest.cmake b/cmake/AddGoogletest.cmake
index bd2c95c66..c85c61e0a 100644
--- a/cmake/AddGoogletest.cmake
+++ b/cmake/AddGoogletest.cmake
@@ -15,7 +15,7 @@ download_project(PROJ                googletest
 )
 
 set(gtest_force_shared_crt ON CACHE BOOL "" FORCE)
-add_subdirectory(${googletest_SOURCE_DIR} ${googletest_SOURCE_DIR})
+add_subdirectory(${googletest_SOURCE_DIR} ${googletest_SOURCE_DIR} EXCLUDE_FROM_ALL)
 
 if (CMAKE_CONFIGURATION_TYPES)
     add_custom_target(check COMMAND ${CMAKE_CTEST_COMMAND} 
diff --git a/conanfile.py b/conanfile.py
new file mode 100644
index 000000000..9949f127a
--- /dev/null
+++ b/conanfile.py
@@ -0,0 +1,23 @@
+from conans import ConanFile, CMake
+
+class HelloConan(ConanFile):
+    name = "CLI11"
+    version = "1.3.0"
+    url = "https://github.com/CLIUtils/CLI11"
+    settings = "os", "compiler", "arch", "build_type"
+    license = "BSD 3 clause"
+    description = "Command Line Interface toolkit for C++11"
+
+    exports_sources = "LICENCE",  "include/*", "cmake/*", "CMakeLists.txt", "tests/*"
+
+    def build(self): # this is not building a library, just tests
+        cmake = CMake(self)
+        cmake.definitions["CLI_EXAMPLES"] = "OFF"
+        cmake.definitions["CLI_SINGLE_FILE"] = "OFF"
+        cmake.configure()
+        cmake.build()
+        cmake.test()
+        cmake.install()
+
+    def package_id(self):
+        self.info.header_only()
diff --git a/test_package/CMakeLists.txt b/test_package/CMakeLists.txt
new file mode 100644
index 000000000..48f6d9903
--- /dev/null
+++ b/test_package/CMakeLists.txt
@@ -0,0 +1,16 @@
+project(PackageTest CXX)
+cmake_minimum_required(VERSION 3.1)
+
+include(${CMAKE_BINARY_DIR}/conanbuildinfo.cmake)
+conan_basic_setup()
+
+set(CMAKE_CXX_STANDARD 11)
+set(CMAKE_CXX_EXTENSIONS OFF)
+set(CMAKE_CXX_STANDARD_REQUIRED ON)
+
+message(STATUS "${CMAKE_PREFIX_PATH}")
+
+find_package(CLI11 CONFIG REQUIRED)
+
+add_executable(example example.cpp)
+target_link_libraries(example CLI11::CLI11)
diff --git a/test_package/conanfile.py b/test_package/conanfile.py
new file mode 100644
index 000000000..0202a8a82
--- /dev/null
+++ b/test_package/conanfile.py
@@ -0,0 +1,19 @@
+from conans import ConanFile, CMake
+import os
+
+class HelloTestConan(ConanFile):
+    settings = "os", "compiler", "build_type", "arch"
+    generators = "cmake"
+
+    def build(self):
+        cmake = CMake(self)
+        cmake.configure()
+        cmake.build()
+
+    def imports(self):
+        self.copy("*.dll", dst="bin", src="bin")
+        self.copy("*.dylib*", dst="bin", src="lib")
+
+    def test(self):
+        os.chdir("bin")
+        self.run(".%sexample" % os.sep)
diff --git a/test_package/example.cpp b/test_package/example.cpp
new file mode 100644
index 000000000..2dfa1d2fa
--- /dev/null
+++ b/test_package/example.cpp
@@ -0,0 +1,20 @@
+// This file is a "Hello, world!" CLI11 program
+
+#include "CLI/CLI.hpp"
+
+#include <iostream>
+
+int main(int argc, char **argv) {
+
+    CLI::App app("Some nice discription");
+
+    int x = 0;
+    app.add_option("-x", x, "an integer value", true /* show default */);
+
+    bool flag;
+    app.add_flag("-f,--flag", flag, "a flag option");
+
+    CLI11_PARSE(app, argc, argv);
+
+    return 0;
+}