From 40ad34b0b110abfc8220e7f4c271859eae8fbad2 Mon Sep 17 00:00:00 2001 From: Ivan Santiago Paunovic Date: Thu, 17 Sep 2020 14:43:32 -0300 Subject: [PATCH] Reapply "Use system installed yaml-cpp 0.6 if available (#8)" (#16) Signed-off-by: Ivan Santiago Paunovic --- CMakeLists.txt | 32 ++++++++++++++++++++------------ yaml_cpp_vendor-extras.cmake.in | 10 ++++------ 2 files changed, 24 insertions(+), 18 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 2ffee5f..b52d930 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -65,22 +65,30 @@ macro(build_yaml_cpp) ) endmacro() -build_yaml_cpp() +# NO_CMAKE_PACKAGE_REGISTRY used to avoid finding the library downloaded in WORKSPACE B +# when building workspace A. +# This should only find a system installed yaml-cpp and thus the environment hook isn't needed. +find_package(yaml-cpp 0.6 QUIET NO_CMAKE_PACKAGE_REGISTRY) +if(NOT yaml-cpp_FOUND) + build_yaml_cpp() -if(WIN32) - ament_environment_hooks(env_hook/yaml_cpp_vendor_library_path.bat) - set(ENV_VAR_NAME "PATH") - set(ENV_VAR_VALUE "opt\\yaml_cpp_vendor\\bin") -else() - ament_environment_hooks(env_hook/yaml_cpp_vendor_library_path.sh) - if(APPLE) - set(ENV_VAR_NAME "DYLD_LIBRARY_PATH") + if(WIN32) + ament_environment_hooks(env_hook/yaml_cpp_vendor_library_path.bat) + set(ENV_VAR_NAME "PATH") + set(ENV_VAR_VALUE "opt\\yaml_cpp_vendor\\bin") else() - set(ENV_VAR_NAME "LD_LIBRARY_PATH") + ament_environment_hooks(env_hook/yaml_cpp_vendor_library_path.sh) + if(APPLE) + set(ENV_VAR_NAME "DYLD_LIBRARY_PATH") + else() + set(ENV_VAR_NAME "LD_LIBRARY_PATH") + endif() + set(ENV_VAR_VALUE "opt/yaml_cpp_vendor/lib") endif() - set(ENV_VAR_VALUE "opt/yaml_cpp_vendor/lib") + ament_environment_hooks(env_hook/yaml_cpp_vendor_library_path.dsv.in) +else() + message(STATUS "Found yaml-cpp ${yaml-cpp_VERSION} in path ${yaml-cpp_CONFIG}") endif() -ament_environment_hooks(env_hook/yaml_cpp_vendor_library_path.dsv.in) ament_package( CONFIG_EXTRAS "yaml_cpp_vendor-extras.cmake.in" diff --git a/yaml_cpp_vendor-extras.cmake.in b/yaml_cpp_vendor-extras.cmake.in index 6141812..a09422d 100644 --- a/yaml_cpp_vendor-extras.cmake.in +++ b/yaml_cpp_vendor-extras.cmake.in @@ -1,8 +1,6 @@ -## mjbogusz: find_package() and if() disabled until ament can handle complex paths resolving to /usr/include -## always use locally built yaml-cpp for now -# find_package(yaml-cpp QUIET) +find_package(yaml-cpp 0.6 QUIET) -# if(NOT yaml-cpp_FOUND) +if(NOT yaml-cpp_FOUND) # add the local Modules directory to the modules path if(WIN32) set(yaml-cpp_DIR "${@PROJECT_NAME@_DIR}/../../../opt/yaml_cpp_vendor/CMake") @@ -10,9 +8,9 @@ set(yaml-cpp_DIR "${@PROJECT_NAME@_DIR}/../../../opt/yaml_cpp_vendor/lib/cmake/yaml-cpp") endif() message(STATUS "Setting yaml-cpp_DIR to: '${yaml-cpp_DIR}'") -# endif() -find_package(yaml-cpp CONFIG REQUIRED QUIET) + find_package(yaml-cpp CONFIG REQUIRED QUIET) +endif() set(yaml_cpp_vendor_LIBRARIES ${YAML_CPP_LIBRARIES}) set(yaml_cpp_vendor_INCLUDE_DIRS ${YAML_CPP_INCLUDE_DIR})