From b63e45522056dfce9fee2b7c0e11466a50af9d28 Mon Sep 17 00:00:00 2001 From: Dan Rose Date: Tue, 22 Oct 2019 14:55:32 -0500 Subject: [PATCH 1/4] Fix build when included with cmake_add_subdirectory --- osrf_testing_tools_cpp/CMakeLists.txt | 2 +- ...esting_tools_cpp_extract_and_build_googletest.cmake | 10 +++++----- .../osrf_testing_tools_cpp_require_googletest.cmake | 3 +++ osrf_testing_tools_cpp/src/memory_tools/CMakeLists.txt | 4 ++-- osrf_testing_tools_cpp/test/cmake/CMakeLists.txt | 2 +- .../googletest-external-project-add.cmake.in | 4 ++-- 6 files changed, 14 insertions(+), 11 deletions(-) diff --git a/osrf_testing_tools_cpp/CMakeLists.txt b/osrf_testing_tools_cpp/CMakeLists.txt index c45e710..30da891 100644 --- a/osrf_testing_tools_cpp/CMakeLists.txt +++ b/osrf_testing_tools_cpp/CMakeLists.txt @@ -20,7 +20,7 @@ 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 "${PROJECT_SOURCE_DIR}/vendor") add_subdirectory(test) endif() 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 7fae240..93f6dfc 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() @@ -74,13 +74,13 @@ macro(osrf_testing_tools_cpp_extract_and_build_googletest # add the -pthread flag for Linux machines so it will always work execute_process(COMMAND bash "-c" "sed -i 's@\${CMAKE_THREAD_LIBS_INIT}@\${CMAKE_THREAD_LIBS_INIT} -pthread@' ${__prefix}-src/googletest/cmake/internal_utils.cmake" RESULT_VARIABLE result - WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/${__prefix}-extracted) + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/${__prefix}-extracted) endif() # 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 3a892ee..f429d0a 100644 --- a/osrf_testing_tools_cpp/src/memory_tools/CMakeLists.txt +++ b/osrf_testing_tools_cpp/src/memory_tools/CMakeLists.txt @@ -13,7 +13,7 @@ add_library(memory_tools SHARED target_include_directories(memory_tools PUBLIC - $ + $ $ ) @@ -97,4 +97,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 - "$" PARENT_SCOPE) + "$" PARENT_SCOPE) diff --git a/osrf_testing_tools_cpp/test/cmake/CMakeLists.txt b/osrf_testing_tools_cpp/test/cmake/CMakeLists.txt index cfa08b2..b04f335 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" + "${PROJECT_SOURCE_DIR}/test/cmake/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 "" From 4bdeae30d1cc915a5d5d6caa2664f7743902978b Mon Sep 17 00:00:00 2001 From: Dan Rose Date: Wed, 12 Feb 2020 14:26:43 -0600 Subject: [PATCH 2/4] Replace project-relative with current source/binary relative dirs --- osrf_testing_tools_cpp/CMakeLists.txt | 10 +++++----- osrf_testing_tools_cpp/src/memory_tools/CMakeLists.txt | 4 ++-- osrf_testing_tools_cpp/test/cmake/CMakeLists.txt | 2 +- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/osrf_testing_tools_cpp/CMakeLists.txt b/osrf_testing_tools_cpp/CMakeLists.txt index 30da891..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 "${PROJECT_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/src/memory_tools/CMakeLists.txt b/osrf_testing_tools_cpp/src/memory_tools/CMakeLists.txt index f429d0a..6a69b54 100644 --- a/osrf_testing_tools_cpp/src/memory_tools/CMakeLists.txt +++ b/osrf_testing_tools_cpp/src/memory_tools/CMakeLists.txt @@ -13,7 +13,7 @@ add_library(memory_tools SHARED target_include_directories(memory_tools PUBLIC - $ + $ $ ) @@ -97,4 +97,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 - "$" PARENT_SCOPE) + "$" PARENT_SCOPE) diff --git a/osrf_testing_tools_cpp/test/cmake/CMakeLists.txt b/osrf_testing_tools_cpp/test/cmake/CMakeLists.txt index b04f335..b1b195e 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 - "${PROJECT_SOURCE_DIR}/test/cmake/test_osrf_testing_tools_cpp_filter_versions.cmake" + "${CMAKE_CURRENT_SOURCE_DIR}/test/cmake/test_osrf_testing_tools_cpp_filter_versions.cmake" ) \ No newline at end of file From e6f3140bb7f9955a7cf89d84047979f79d7e10fe Mon Sep 17 00:00:00 2001 From: Dan Rose Date: Wed, 12 Feb 2020 14:48:24 -0600 Subject: [PATCH 3/4] Fix more relative paths that won't be resolved when not top level project --- osrf_testing_tools_cpp/src/memory_tools/CMakeLists.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/osrf_testing_tools_cpp/src/memory_tools/CMakeLists.txt b/osrf_testing_tools_cpp/src/memory_tools/CMakeLists.txt index 6a69b54..6c576b2 100644 --- a/osrf_testing_tools_cpp/src/memory_tools/CMakeLists.txt +++ b/osrf_testing_tools_cpp/src/memory_tools/CMakeLists.txt @@ -13,6 +13,7 @@ add_library(memory_tools SHARED target_include_directories(memory_tools PUBLIC + $ $ $ ) @@ -97,4 +98,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 - "$" PARENT_SCOPE) + "$" PARENT_SCOPE) From 1af4a41e7297a87a1526dd920fba579e0745bb60 Mon Sep 17 00:00:00 2001 From: Dan Rose Date: Wed, 12 Feb 2020 17:37:04 -0600 Subject: [PATCH 4/4] Fix another path --- osrf_testing_tools_cpp/test/cmake/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osrf_testing_tools_cpp/test/cmake/CMakeLists.txt b/osrf_testing_tools_cpp/test/cmake/CMakeLists.txt index b1b195e..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_CURRENT_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