diff --git a/CMakeLists.txt b/CMakeLists.txt
index 115c898..4946f09 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -19,11 +19,11 @@
 # set(CMAKE_BUILD_TYPE Release)
 # set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O3")
 
-if (CMAKE_COMPILER_IS_GNUCC)
+if(CMAKE_COMPILER_IS_GNUCC)
   set(CMAKE_CXX_FLAGS  "${CMAKE_CXX_FLAGS} -Wall")
 endif()
 
-if (MSVC)
+if(MSVC)
   set(CMAKE_CXX_FLAGS  "${CMAKE_CXX_FLAGS} /W4")
 endif()
 
@@ -42,7 +42,7 @@
 
 if(INJA_USE_EMBEDDED_JSON)
   find_package(nlohmann_json QUIET)
-  if (NOT nlohmann_json_FOUND)
+  if(NOT nlohmann_json_FOUND)
     set(INJA_PACKAGE_USE_EMBEDDED_JSON ON)
     add_library(nlohmann_json INTERFACE)
     add_library(pantor::nlohmann_json ALIAS nlohmann_json)
@@ -61,8 +61,13 @@
     set(INJA_SELECTED_JSON_LIBRARY "nlohmann_json::nlohmann_json")
   endif()
 else()
-  find_package(nlohmann_json REQUIRED)
-  set(INJA_SELECTED_JSON_LIBRARY "nlohmann_json::nlohmann_json")
+  # If target already exists, e.g. by git submodules
+  if(TARGET nlohmann_json)
+    set(INJA_SELECTED_JSON_LIBRARY "nlohmann_json::nlohmann_json")
+  else()
+    find_package(nlohmann_json REQUIRED)
+    set(INJA_SELECTED_JSON_LIBRARY "nlohmann_json::nlohmann_json")
+  endif()
 endif()
 
 target_link_libraries(inja INTERFACE ${INJA_SELECTED_JSON_LIBRARY})
@@ -70,18 +75,6 @@
 execute_process(COMMAND scripts/update_single_include.sh WORKING_DIRECTORY ${PROJECT_SOURCE_DIR})
 
 
-if (COVERALLS)
-  include(Coveralls)
-  coveralls_turn_on_coverage()
-
-  file(GLOB_RECURSE COVERAGE_SRCS include/inja/*.hpp)
-
-  # set(COVERAGE_SRCS test/unit.cpp test/unit-renderer.cpp include/inja)
-
-  coveralls_setup("${COVERAGE_SRCS}" OFF) # If we should upload.
-endif()
-
-
 if(BUILD_TESTING)
   enable_testing()
 
@@ -115,6 +108,18 @@
 endif()
 
 
+if(COVERALLS)
+  include(Coveralls)
+  coveralls_turn_on_coverage()
+
+  file(GLOB_RECURSE COVERAGE_SRCS include/inja/*.hpp)
+
+  # set(COVERAGE_SRCS test/unit.cpp test/unit-renderer.cpp include/inja)
+
+  coveralls_setup("${COVERAGE_SRCS}" OFF) # If we should upload.
+endif()
+
+
 include(CMakePackageConfigHelpers)
 
 write_basic_package_version_file(
@@ -149,7 +154,7 @@
 )
 
 
-if (INJA_INSTALL)
+if(INJA_INSTALL)
   set(INJA_CONFIG_PATH "lib/cmake/inja")
 
   # install tree package config
@@ -182,6 +187,6 @@
 endif()
 
 
-if (INJA_EXPORT)
+if(INJA_EXPORT)
   export(PACKAGE inja)
 endif()
