From 3e3ecbf1c1db6374ec8fbc03381191479bafef1c Mon Sep 17 00:00:00 2001 From: Martin Valgur Date: Mon, 22 May 2023 19:31:51 +0300 Subject: [PATCH] conan.cmake: more robust generator output dir extraction --- cmake/conan.cmake | 8 +++++++- cmake/conan_dependencies.cmake | 4 +--- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/cmake/conan.cmake b/cmake/conan.cmake index 087516f4..28397318 100644 --- a/cmake/conan.cmake +++ b/cmake/conan.cmake @@ -581,7 +581,7 @@ function(conan_cmake_install) ${OUTPUT_FOLDER} ${GENERATOR} ${BUILD} ${OPTIONS} ${OPTIONS_HOST} ${OPTIONS_BUILD} ${PROFILE} ${PROFILE_HOST} ${PROFILE_BUILD} ${SETTINGS} ${SETTINGS_HOST} ${SETTINGS_BUILD} - ${CONF_HOST} ${CONF_BUILD}) + ${CONF_HOST} ${CONF_BUILD} --format=json) string(REPLACE ";" " " _install_args "${install_args}") message(STATUS "Conan executing: ${CONAN_CMD} ${_install_args}") @@ -595,6 +595,8 @@ function(conan_cmake_install) execute_process(COMMAND ${CONAN_CMD} ${install_args} RESULT_VARIABLE return_code + OUTPUT_VARIABLE conan_stdout + ERROR_VARIABLE conan_stderr ${OUTPUT_OPT} ${ERROR_OPT} WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}) @@ -605,6 +607,10 @@ function(conan_cmake_install) else() message(FATAL_ERROR "Conan install failed='${return_code}'") endif() + else() + string(REGEX MATCH "\"generators_folder\": *\"([^\"]*)\"" MATCHED_PATH "${conan_stdout}") + string(REGEX REPLACE "\"generators_folder\": *\"([^\"]*)\"" "\\1" CONAN_GENERATORS_FOLDER "${MATCHED_PATH}") + set(CONAN_GENERATORS_FOLDER "${CONAN_GENERATORS_FOLDER}" PARENT_SCOPE) endif() endfunction() diff --git a/cmake/conan_dependencies.cmake b/cmake/conan_dependencies.cmake index 75c517a3..7551f87f 100644 --- a/cmake/conan_dependencies.cmake +++ b/cmake/conan_dependencies.cmake @@ -91,9 +91,7 @@ function(_custom_conan_cmake_install) # Prepend to prioritize conan packages over system ones. # Multiple paths are added due to the output directory of the generator depending on # the layout() config in the used conanfile.py. - list(PREPEND CMAKE_PREFIX_PATH - ${CMAKE_CURRENT_BINARY_DIR} - ${CMAKE_CURRENT_BINARY_DIR}/build/${CMAKE_BUILD_TYPE}/generators) + list(PREPEND CMAKE_PREFIX_PATH ${CONAN_GENERATORS_FOLDER}) set(CMAKE_PREFIX_PATH "${CMAKE_PREFIX_PATH}" PARENT_SCOPE) endfunction()