diff --git a/osrf_testing_tools_cpp/CMakeLists.txt b/osrf_testing_tools_cpp/CMakeLists.txt
index c45e710..4fcabe0 100644
--- a/osrf_testing_tools_cpp/CMakeLists.txt
+++ b/osrf_testing_tools_cpp/CMakeLists.txt
@@ -20,19 +20,19 @@ if(BUILD_TESTING)
   include(cmake/osrf_testing_tools_cpp_require_googletest.cmake)
   # ensures target gtest_main exists
   osrf_testing_tools_cpp_require_googletest(VERSION_GTE 1.8
-    VENDOR_DIR "${CMAKE_SOURCE_DIR}/vendor")
+    VENDOR_DIR "${CMAKE_CURRENT_SOURCE_DIR}/vendor")
 
   add_subdirectory(test)
 endif()
 
 configure_file(osrf_testing_tools_cppConfig.cmake.in
-  "${PROJECT_BINARY_DIR}/osrf_testing_tools_cppConfig.cmake" @ONLY)
+  "${CMAKE_CURRENT_BINARY_DIR}/osrf_testing_tools_cppConfig.cmake" @ONLY)
 configure_file(osrf_testing_tools_cppConfigVersion.cmake.in
-  "${PROJECT_BINARY_DIR}/osrf_testing_tools_cppConfigVersion.cmake" @ONLY)
+  "${CMAKE_CURRENT_BINARY_DIR}/osrf_testing_tools_cppConfigVersion.cmake" @ONLY)
 
 install(FILES
-  "${PROJECT_BINARY_DIR}/osrf_testing_tools_cppConfig.cmake"
-  "${PROJECT_BINARY_DIR}/osrf_testing_tools_cppConfigVersion.cmake"
+  "${CMAKE_CURRENT_BINARY_DIR}/osrf_testing_tools_cppConfig.cmake"
+  "${CMAKE_CURRENT_BINARY_DIR}/osrf_testing_tools_cppConfigVersion.cmake"
   DESTINATION share/${PROJECT_NAME}/cmake
 )
 
diff --git a/osrf_testing_tools_cpp/cmake/osrf_testing_tools_cpp_extract_and_build_googletest.cmake b/osrf_testing_tools_cpp/cmake/osrf_testing_tools_cpp_extract_and_build_googletest.cmake
index 709ed38..c2b0b88 100644
--- a/osrf_testing_tools_cpp/cmake/osrf_testing_tools_cpp_extract_and_build_googletest.cmake
+++ b/osrf_testing_tools_cpp/cmake/osrf_testing_tools_cpp_extract_and_build_googletest.cmake
@@ -48,14 +48,14 @@ macro(osrf_testing_tools_cpp_extract_and_build_googletest
 
   execute_process(COMMAND ${CMAKE_COMMAND} -G "${CMAKE_GENERATOR}" .
     RESULT_VARIABLE result
-    WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/googletest-${GOOGLETEST_VERSION}-extracted)
+    WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/googletest-${GOOGLETEST_VERSION}-extracted)
   if(result)
     message(FATAL_ERROR "CMake step for googletest failed: ${result}")
   endif()
 
   execute_process(COMMAND ${CMAKE_COMMAND} --build .
     RESULT_VARIABLE result
-    WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/googletest-${GOOGLETEST_VERSION}-extracted)
+    WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/googletest-${GOOGLETEST_VERSION}-extracted)
   if(result)
     message(FATAL_ERROR "Build step for googletest failed: ${result}")
   endif()
@@ -77,8 +77,8 @@ macro(osrf_testing_tools_cpp_extract_and_build_googletest
   # Add googletest directly to our build. This defines
   # the gtest and gtest_main targets.
   add_subdirectory(
-    ${CMAKE_BINARY_DIR}/${__prefix}-extracted/${__prefix}-src
-    ${CMAKE_BINARY_DIR}/${__prefix}-extracted/${__prefix}-build
+    ${CMAKE_CURRENT_BINARY_DIR}/${__prefix}-extracted/${__prefix}-src
+    ${CMAKE_CURRENT_BINARY_DIR}/${__prefix}-extracted/${__prefix}-build
     EXCLUDE_FROM_ALL
   )
   unset(__prefix)
diff --git a/osrf_testing_tools_cpp/cmake/osrf_testing_tools_cpp_require_googletest.cmake b/osrf_testing_tools_cpp/cmake/osrf_testing_tools_cpp_require_googletest.cmake
index 968cece..277cab0 100644
--- a/osrf_testing_tools_cpp/cmake/osrf_testing_tools_cpp_require_googletest.cmake
+++ b/osrf_testing_tools_cpp/cmake/osrf_testing_tools_cpp_require_googletest.cmake
@@ -45,6 +45,9 @@ set(OSRF_TESTING_TOOLS_CPP_REQUIRE_GOOGLETEST_VERSION_SETUP)
 # @public
 #
 macro(osrf_testing_tools_cpp_require_googletest)
+  if (TARGET gtest OR TARGET gtest_main)
+    return()
+  endif()
   # Make sure this was only called once.
   if(OSRF_TESTING_TOOLS_CPP_REQUIRE_GOOGLETEST_VERSION_SETUP)
     set(error_msg "osrf_testing_tools_cpp_require_googletest():")
diff --git a/osrf_testing_tools_cpp/src/memory_tools/CMakeLists.txt b/osrf_testing_tools_cpp/src/memory_tools/CMakeLists.txt
index 3001cda..b886749 100644
--- a/osrf_testing_tools_cpp/src/memory_tools/CMakeLists.txt
+++ b/osrf_testing_tools_cpp/src/memory_tools/CMakeLists.txt
@@ -21,7 +21,8 @@ add_library(memory_tools SHARED
 
 target_include_directories(memory_tools
   PUBLIC
-    $<BUILD_INTERFACE:${CMAKE_SOURCE_DIR}/include>
+    $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/../../include>
+    $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
     $<INSTALL_INTERFACE:include>
 )
 target_link_libraries(memory_tools PRIVATE Backward::Backward)
@@ -93,4 +94,4 @@ install(EXPORT memory_tools_interpose
 set(memory_tools_extra_test_env "${memory_tools_extra_test_env}" PARENT_SCOPE)
 set(memory_tools_is_available "${memory_tools_is_available}" PARENT_SCOPE)
 set(memory_tools_src_dir_internal_testing_only
-  "$<BUILD_INTERFACE:${CMAKE_SOURCE_DIR}/src>" PARENT_SCOPE)
+  "$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/..>" PARENT_SCOPE)
diff --git a/osrf_testing_tools_cpp/test/cmake/CMakeLists.txt b/osrf_testing_tools_cpp/test/cmake/CMakeLists.txt
index cfa08b2..53539f6 100644
--- a/osrf_testing_tools_cpp/test/cmake/CMakeLists.txt
+++ b/osrf_testing_tools_cpp/test/cmake/CMakeLists.txt
@@ -3,5 +3,5 @@ add_test(
   NAME "test_osrf_testing_tools_cpp_filter_versions_cmake"
   COMMAND
     ${CMAKE_COMMAND} -P
-    "${CMAKE_SOURCE_DIR}/test/cmake/test_osrf_testing_tools_cpp_filter_versions.cmake"
+    "${CMAKE_CURRENT_SOURCE_DIR}/test_osrf_testing_tools_cpp_filter_versions.cmake"
 )
\ No newline at end of file
diff --git a/osrf_testing_tools_cpp/vendor/google/googletest/googletest-external-project-add.cmake.in b/osrf_testing_tools_cpp/vendor/google/googletest/googletest-external-project-add.cmake.in
index ae7b0ce..123678c 100644
--- a/osrf_testing_tools_cpp/vendor/google/googletest/googletest-external-project-add.cmake.in
+++ b/osrf_testing_tools_cpp/vendor/google/googletest/googletest-external-project-add.cmake.in
@@ -9,8 +9,8 @@ include(ExternalProject)
 ExternalProject_Add(googletest
   URL               "@GOOGLETEST_ARCHIVE_LOCATION@"
   URL_MD5           "@GOOGLETEST_MD5SUM@"
-  SOURCE_DIR        "${CMAKE_BINARY_DIR}/googletest-@GOOGLETEST_VERSION@-src"
-  BINARY_DIR        "${CMAKE_BINARY_DIR}/googletest-@GOOGLETEST_VERSION@-build"
+  SOURCE_DIR        "${CMAKE_CURRENT_BINARY_DIR}/googletest-@GOOGLETEST_VERSION@-src"
+  BINARY_DIR        "${CMAKE_CURRENT_BINARY_DIR}/googletest-@GOOGLETEST_VERSION@-build"
   CONFIGURE_COMMAND ""
   BUILD_COMMAND     ""
   INSTALL_COMMAND   ""