diff options
author | Cristian Adam <cristian.adam@qt.io> | 2024-02-09 14:32:33 +0100 |
---|---|---|
committer | Cristian Adam <cristian.adam@qt.io> | 2024-02-19 08:30:47 +0000 |
commit | d13a7dc9b51fcdfb1d7686c753aa1a2d4070cbf0 (patch) | |
tree | 838a1fe7782861669be4821781c7fb20e4c596f3 /src/share | |
parent | 1bd3c7d9e5b93b23fc642700a34933780db52a48 (diff) |
CMakePM: Update cmake conan for auto-setup
Update to https://github.com/conan-io/cmake-conan/commit/
f6464d1e13ef7a47c569f5061f9607ea63339d39
Task-number: QTCREATORBUG-30169
Change-Id: Ibb8f3d353117c5c8ce21b8686cb6e2e5ee146698
Reviewed-by: Alessandro Portale <alessandro.portale@qt.io>
Reviewed-by: Marcus Tillmanns <marcus.tillmanns@qt.io>
Diffstat (limited to 'src/share')
-rw-r--r-- | src/share/3rdparty/package-manager/conan_provider.cmake | 243 |
1 files changed, 177 insertions, 66 deletions
diff --git a/src/share/3rdparty/package-manager/conan_provider.cmake b/src/share/3rdparty/package-manager/conan_provider.cmake index d94a9d811f..e5fa9cec19 100644 --- a/src/share/3rdparty/package-manager/conan_provider.cmake +++ b/src/share/3rdparty/package-manager/conan_provider.cmake @@ -1,5 +1,5 @@ # https://github.com/conan-io/cmake-conan/blob/develop2/conan_provider.cmake -# commit: 451fa97d2c59c07b13fb4812a64b2a6391f9e781 +# commit: f6464d1e13ef7a47c569f5061f9607ea63339d39 # # The MIT License (MIT) # @@ -30,22 +30,26 @@ function(detect_os OS OS_API_LEVEL OS_SDK OS_SUBSYSTEM OS_VERSION) # it could be cross compilation message(STATUS "CMake-Conan: cmake_system_name=${CMAKE_SYSTEM_NAME}") if(CMAKE_SYSTEM_NAME AND NOT CMAKE_SYSTEM_NAME STREQUAL "Generic") - if(${CMAKE_SYSTEM_NAME} STREQUAL "Darwin") + if(CMAKE_SYSTEM_NAME STREQUAL "Darwin") set(${OS} Macos PARENT_SCOPE) - elseif(${CMAKE_SYSTEM_NAME} STREQUAL "QNX") + elseif(CMAKE_SYSTEM_NAME STREQUAL "QNX") set(${OS} Neutrino PARENT_SCOPE) - elseif(${CMAKE_SYSTEM_NAME} STREQUAL "CYGWIN") + elseif(CMAKE_SYSTEM_NAME STREQUAL "CYGWIN") set(${OS} Windows PARENT_SCOPE) set(${OS_SUBSYSTEM} cygwin PARENT_SCOPE) - elseif(${CMAKE_SYSTEM_NAME} MATCHES "^MSYS") + elseif(CMAKE_SYSTEM_NAME MATCHES "^MSYS") set(${OS} Windows PARENT_SCOPE) set(${OS_SUBSYSTEM} msys2 PARENT_SCOPE) else() set(${OS} ${CMAKE_SYSTEM_NAME} PARENT_SCOPE) endif() - if(${CMAKE_SYSTEM_NAME} STREQUAL "Android") - string(REGEX MATCH "[0-9]+" _OS_API_LEVEL ${ANDROID_PLATFORM}) - message(STATUS "CMake-Conan: android_platform=${ANDROID_PLATFORM}") + if(CMAKE_SYSTEM_NAME STREQUAL "Android") + if(DEFINED ANDROID_PLATFORM) + string(REGEX MATCH "[0-9]+" _OS_API_LEVEL ${ANDROID_PLATFORM}) + elseif(DEFINED CMAKE_SYSTEM_VERSION) + set(_OS_API_LEVEL ${CMAKE_SYSTEM_VERSION}) + endif() + message(STATUS "CMake-Conan: android api level=${_OS_API_LEVEL}") set(${OS_API_LEVEL} ${_OS_API_LEVEL} PARENT_SCOPE) endif() if(CMAKE_SYSTEM_NAME MATCHES "Darwin|iOS|tvOS|watchOS") @@ -91,15 +95,22 @@ function(detect_arch ARCH) message(WARNING "CMake-Conan: Multiple architectures detected, this will only work if Conan recipe(s) produce fat binaries.") endif() endif() - if(CMAKE_SYSTEM_PROCESSOR MATCHES "aarch64|ARM64|arm64" OR CMAKE_OSX_ARCHITECTURES MATCHES arm64) + if(CMAKE_SYSTEM_NAME MATCHES "Darwin|iOS|tvOS|watchOS" AND NOT CMAKE_OSX_ARCHITECTURES STREQUAL "") + set(host_arch ${CMAKE_OSX_ARCHITECTURES}) + elseif(MSVC) + set(host_arch ${CMAKE_CXX_COMPILER_ARCHITECTURE_ID}) + else() + set(host_arch ${CMAKE_SYSTEM_PROCESSOR}) + endif() + if(host_arch MATCHES "aarch64|arm64|ARM64") set(_ARCH armv8) - elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "armv7-a|armv7l" OR CMAKE_OSX_ARCHITECTURES MATCHES armv7) + elseif(host_arch MATCHES "armv7|armv7-a|armv7l|ARMV7") set(_ARCH armv7) - elseif(CMAKE_OSX_ARCHITECTURES MATCHES armv7s) + elseif(host_arch MATCHES armv7s) set(_ARCH armv7s) - elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "i686" OR CMAKE_OSX_ARCHITECTURES MATCHES i386) + elseif(host_arch MATCHES "i686|i386|X86") set(_ARCH x86) - elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "AMD64|amd64|x86_64" OR CMAKE_OSX_ARCHITECTURES MATCHES x86_64) + elseif(host_arch MATCHES "AMD64|amd64|x86_64|x64") set(_ARCH x86_64) endif() message(STATUS "CMake-Conan: cmake_system_processor=${_ARCH}") @@ -114,6 +125,7 @@ function(detect_cxx_standard CXX_STANDARD) endif() endfunction() + macro(detect_gnu_libstdcxx) # _CONAN_IS_GNU_LIBSTDCXX true if GNU libstdc++ check_cxx_source_compiles(" @@ -136,6 +148,7 @@ macro(detect_gnu_libstdcxx) unset (_CONAN_GNU_LIBSTDCXX_IS_CXX11_ABI) endmacro() + macro(detect_libcxx) # _CONAN_IS_LIBCXX true if LLVM libc++ check_cxx_source_compiles(" @@ -147,10 +160,10 @@ macro(detect_libcxx) endmacro() -function(detect_lib_cxx OS LIB_CXX) - if(${OS} STREQUAL "Android") - message(STATUS "CMake-Conan: android_stl=${ANDROID_STL}") - set(${LIB_CXX} ${ANDROID_STL} PARENT_SCOPE) +function(detect_lib_cxx LIB_CXX) + if(CMAKE_SYSTEM_NAME STREQUAL "Android") + message(STATUS "CMake-Conan: android_stl=${CMAKE_ANDROID_STL_TYPE}") + set(${LIB_CXX} ${CMAKE_ANDROID_STL_TYPE} PARENT_SCOPE) return() endif() @@ -207,37 +220,42 @@ function(detect_compiler COMPILER COMPILER_VERSION COMPILER_RUNTIME COMPILER_RUN string(SUBSTRING ${MSVC_VERSION} 0 3 _COMPILER_VERSION) # Configure compiler.runtime and compiler.runtime_type settings for MSVC if(CMAKE_MSVC_RUNTIME_LIBRARY) - set(_KNOWN_MSVC_RUNTIME_VALUES "") - list(APPEND _KNOWN_MSVC_RUNTIME_VALUES MultiThreaded MultiThreadedDLL) - list(APPEND _KNOWN_MSVC_RUNTIME_VALUES MultiThreadedDebug MultiThreadedDebugDLL) - list(APPEND _KNOWN_MSVC_RUNTIME_VALUES MultiThreaded$<$<CONFIG:Debug>:Debug> MultiThreaded$<$<CONFIG:Debug>:Debug>DLL) - - # only accept the 6 possible values, otherwise we don't don't know to map this - if(NOT CMAKE_MSVC_RUNTIME_LIBRARY IN_LIST _KNOWN_MSVC_RUNTIME_VALUES) - message(FATAL_ERROR "CMake-Conan: unable to map MSVC runtime: ${CMAKE_MSVC_RUNTIME_LIBRARY} to Conan settings") - endif() + set(_msvc_runtime_library ${CMAKE_MSVC_RUNTIME_LIBRARY}) + else() + set(_msvc_runtime_library MultiThreaded$<$<CONFIG:Debug>:Debug>DLL) # default value documented by CMake + endif() + + set(_KNOWN_MSVC_RUNTIME_VALUES "") + list(APPEND _KNOWN_MSVC_RUNTIME_VALUES MultiThreaded MultiThreadedDLL) + list(APPEND _KNOWN_MSVC_RUNTIME_VALUES MultiThreadedDebug MultiThreadedDebugDLL) + list(APPEND _KNOWN_MSVC_RUNTIME_VALUES MultiThreaded$<$<CONFIG:Debug>:Debug> MultiThreaded$<$<CONFIG:Debug>:Debug>DLL) - # Runtime is "dynamic" in all cases if it ends in DLL - if(CMAKE_MSVC_RUNTIME_LIBRARY MATCHES ".*DLL$") - set(_COMPILER_RUNTIME "dynamic") + # only accept the 6 possible values, otherwise we don't don't know to map this + if(NOT _msvc_runtime_library IN_LIST _KNOWN_MSVC_RUNTIME_VALUES) + message(FATAL_ERROR "CMake-Conan: unable to map MSVC runtime: ${_msvc_runtime_library} to Conan settings") + endif() + + # Runtime is "dynamic" in all cases if it ends in DLL + if(_msvc_runtime_library MATCHES ".*DLL$") + set(_COMPILER_RUNTIME "dynamic") + else() + set(_COMPILER_RUNTIME "static") + endif() + message(STATUS "CMake-Conan: CMake compiler.runtime=${_COMPILER_RUNTIME}") + + # Only define compiler.runtime_type when explicitly requested + # If a generator expression is used, let Conan handle it conditional on build_type + if(NOT _msvc_runtime_library MATCHES "<CONFIG:Debug>:Debug>") + if(_msvc_runtime_library MATCHES "Debug") + set(_COMPILER_RUNTIME_TYPE "Debug") else() - set(_COMPILER_RUNTIME "static") + set(_COMPILER_RUNTIME_TYPE "Release") endif() + message(STATUS "CMake-Conan: CMake compiler.runtime_type=${_COMPILER_RUNTIME_TYPE}") + endif() - # Only define compiler.runtime_type when explicitly requested - # If a generator expression is used, let Conan handle it conditional on build_type - get_property(_IS_MULTI_CONFIG_GENERATOR GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG) - if(NOT CMAKE_MSVC_RUNTIME_LIBRARY MATCHES "<CONFIG:Debug>:Debug>") - if(CMAKE_MSVC_RUNTIME_LIBRARY MATCHES "Debug") - set(_COMPILER_RUNTIME_TYPE "Debug") - else() - set(_COMPILER_RUNTIME_TYPE "Release") - endif() - endif() + unset(_KNOWN_MSVC_RUNTIME_VALUES) - unset(_KNOWN_MSVC_RUNTIME_VALUES) - unset(_IS_MULTI_CONFIG_GENERATOR) - endif() elseif(_COMPILER MATCHES AppleClang) set(_COMPILER "apple-clang") string(REPLACE "." ";" VERSION_LIST ${CMAKE_CXX_COMPILER_VERSION}) @@ -267,6 +285,7 @@ function(detect_compiler COMPILER COMPILER_VERSION COMPILER_RUNTIME COMPILER_RUN set(${COMPILER_RUNTIME_TYPE} ${_COMPILER_RUNTIME_TYPE} PARENT_SCOPE) endfunction() + function(detect_build_type BUILD_TYPE) get_property(_MULTICONFIG_GENERATOR GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG) if(NOT _MULTICONFIG_GENERATOR) @@ -276,23 +295,43 @@ function(detect_build_type BUILD_TYPE) endif() endfunction() +macro(set_conan_compiler_if_appleclang lang command output_variable) + if(CMAKE_${lang}_COMPILER_ID STREQUAL "AppleClang") + execute_process(COMMAND xcrun --find ${command} + OUTPUT_VARIABLE _xcrun_out OUTPUT_STRIP_TRAILING_WHITESPACE) + cmake_path(GET _xcrun_out PARENT_PATH _xcrun_toolchain_path) + cmake_path(GET CMAKE_${lang}_COMPILER PARENT_PATH _compiler_parent_path) + if ("${_xcrun_toolchain_path}" STREQUAL "${_compiler_parent_path}") + set(${output_variable} "") + endif() + unset(_xcrun_out) + unset(_xcrun_toolchain_path) + unset(_compiler_parent_path) + endif() +endmacro() + + macro(append_compiler_executables_configuration) set(_conan_c_compiler "") set(_conan_cpp_compiler "") if(CMAKE_C_COMPILER) set(_conan_c_compiler "\"c\":\"${CMAKE_C_COMPILER}\",") + set_conan_compiler_if_appleclang(C cc _conan_c_compiler) else() message(WARNING "CMake-Conan: The C compiler is not defined. " "Please define CMAKE_C_COMPILER or enable the C language.") endif() if(CMAKE_CXX_COMPILER) set(_conan_cpp_compiler "\"cpp\":\"${CMAKE_CXX_COMPILER}\"") + set_conan_compiler_if_appleclang(CXX c++ _conan_cpp_compiler) else() message(WARNING "CMake-Conan: The C++ compiler is not defined. " "Please define CMAKE_CXX_COMPILER or enable the C++ language.") endif() - string(APPEND PROFILE "tools.build:compiler_executables={${_conan_c_compiler}${_conan_cpp_compiler}}\n") + if(NOT "x${_conan_c_compiler}${_conan_cpp_compiler}" STREQUAL "x") + string(APPEND PROFILE "tools.build:compiler_executables={${_conan_c_compiler}${_conan_cpp_compiler}}\n") + endif() unset(_conan_c_compiler) unset(_conan_cpp_compiler) endmacro() @@ -303,7 +342,7 @@ function(detect_host_profile output_file) detect_arch(MYARCH) detect_compiler(MYCOMPILER MYCOMPILER_VERSION MYCOMPILER_RUNTIME MYCOMPILER_RUNTIME_TYPE) detect_cxx_standard(MYCXX_STANDARD) - detect_lib_cxx(MYOS MYLIB_CXX) + detect_lib_cxx(MYLIB_CXX) detect_build_type(MYBUILD_TYPE) set(PROFILE "") @@ -360,7 +399,7 @@ function(detect_host_profile output_file) # propagate compilers via profile append_compiler_executables_configuration() - if(${MYOS} STREQUAL "Android") + if(MYOS STREQUAL "Android") string(APPEND PROFILE "tools.android:ndk_path=${CMAKE_ANDROID_NDK}\n") endif() @@ -398,12 +437,26 @@ function(conan_install) # Invoke "conan install" with the provided arguments set(CONAN_ARGS ${CONAN_ARGS} -of=${CONAN_OUTPUT_FOLDER}) message(STATUS "CMake-Conan: conan install ${CMAKE_SOURCE_DIR} ${CONAN_ARGS} ${ARGN}") + + + # In case there was not a valid cmake executable in the PATH, we inject the + # same we used to invoke the provider to the PATH + if(DEFINED PATH_TO_CMAKE_BIN) + set(_OLD_PATH $ENV{PATH}) + set(ENV{PATH} "$ENV{PATH}:${PATH_TO_CMAKE_BIN}") + endif() + execute_process(COMMAND ${CONAN_COMMAND} install ${CMAKE_SOURCE_DIR} ${CONAN_ARGS} ${ARGN} --format=json RESULT_VARIABLE return_code OUTPUT_VARIABLE conan_stdout ERROR_VARIABLE conan_stderr ECHO_ERROR_VARIABLE # show the text output regardless WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}) + + if(DEFINED PATH_TO_CMAKE_BIN) + set(ENV{PATH} "${_OLD_PATH}") + endif() + if(NOT "${return_code}" STREQUAL "0") message(FATAL_ERROR "Conan install failed='${return_code}'") else() @@ -411,6 +464,7 @@ function(conan_install) # one is specified, but we don't know a priori where this is. # TODO: this can be made more robust if Conan can provide this in the json output string(JSON CONAN_GENERATORS_FOLDER GET ${conan_stdout} graph nodes 0 generators_folder) + cmake_path(CONVERT ${CONAN_GENERATORS_FOLDER} TO_CMAKE_PATH_LIST CONAN_GENERATORS_FOLDER) # message("conan stdout: ${conan_stdout}") message(STATUS "CMake-Conan: CONAN_GENERATORS_FOLDER=${CONAN_GENERATORS_FOLDER}") set_property(GLOBAL PROPERTY CONAN_GENERATORS_FOLDER "${CONAN_GENERATORS_FOLDER}") @@ -459,6 +513,7 @@ function(conan_version_check) endif() endfunction() + macro(construct_profile_argument argument_variable profile_list) set(${argument_variable} "") if("${profile_list}" STREQUAL "CONAN_HOST_PROFILE") @@ -479,8 +534,8 @@ endmacro() macro(conan_provide_dependency method package_name) set_property(GLOBAL PROPERTY CONAN_PROVIDE_DEPENDENCY_INVOKED TRUE) - get_property(CONAN_INSTALL_SUCCESS GLOBAL PROPERTY CONAN_INSTALL_SUCCESS) - if(NOT CONAN_INSTALL_SUCCESS) + get_property(_conan_install_success GLOBAL PROPERTY CONAN_INSTALL_SUCCESS) + if(NOT _conan_install_success) find_program(CONAN_COMMAND "conan" REQUIRED) conan_get_version(${CONAN_COMMAND} CONAN_CURRENT_VERSION) conan_version_check(MINIMUM ${CONAN_MINIMUM_VERSION} CURRENT ${CONAN_CURRENT_VERSION}) @@ -493,21 +548,39 @@ macro(conan_provide_dependency method package_name) endif() construct_profile_argument(_host_profile_flags CONAN_HOST_PROFILE) construct_profile_argument(_build_profile_flags CONAN_BUILD_PROFILE) - get_property(_MULTICONFIG_GENERATOR GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG) - if(NOT _MULTICONFIG_GENERATOR) + if(EXISTS "${CMAKE_SOURCE_DIR}/conanfile.py") + file(READ "${CMAKE_SOURCE_DIR}/conanfile.py" outfile) + if(NOT "${outfile}" MATCHES ".*CMakeDeps.*") + message(WARNING "Cmake-conan: CMakeDeps generator was not defined in the conanfile") + endif() + set(generator "") + elseif (EXISTS "${CMAKE_SOURCE_DIR}/conanfile.txt") + file(READ "${CMAKE_SOURCE_DIR}/conanfile.txt" outfile) + if(NOT "${outfile}" MATCHES ".*CMakeDeps.*") + message(WARNING "Cmake-conan: CMakeDeps generator was not defined in the conanfile. " + "Please define the generator as it will be mandatory in the future") + endif() + set(generator "-g;CMakeDeps") + endif() + get_property(_multiconfig_generator GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG) + if(NOT _multiconfig_generator) message(STATUS "CMake-Conan: Installing single configuration ${CMAKE_BUILD_TYPE}") - conan_install(${_host_profile_flags} ${_build_profile_flags} --build=missing -g CMakeDeps) + conan_install(${_host_profile_flags} ${_build_profile_flags} ${CONAN_INSTALL_ARGS} ${generator}) else() message(STATUS "CMake-Conan: Installing both Debug and Release") - conan_install(${_host_profile_flags} ${_build_profile_flags} -s build_type=Release --build=missing -g CMakeDeps) - conan_install(${_host_profile_flags} ${_build_profile_flags} -s build_type=Debug --build=missing -g CMakeDeps) + conan_install(${_host_profile_flags} ${_build_profile_flags} -s build_type=Release ${CONAN_INSTALL_ARGS} ${generator}) + conan_install(${_host_profile_flags} ${_build_profile_flags} -s build_type=Debug ${CONAN_INSTALL_ARGS} ${generator}) endif() - unset(_MULTICONFIG_GENERATOR) + unset(_host_profile_flags) + unset(_build_profile_flags) + unset(_multiconfig_generator) + unset(_conan_install_success) else() message(STATUS "CMake-Conan: find_package(${ARGV1}) found, 'conan install' already ran") + unset(_conan_install_success) endif() - get_property(CONAN_GENERATORS_FOLDER GLOBAL PROPERTY CONAN_GENERATORS_FOLDER) + get_property(_conan_generators_folder GLOBAL PROPERTY CONAN_GENERATORS_FOLDER) # Ensure that we consider Conan-provided packages ahead of any other, # irrespective of other settings that modify the search order or search paths @@ -517,28 +590,66 @@ macro(conan_provide_dependency method package_name) # find_package (<PackageName>) # Filter out `REQUIRED` from the argument list, as the first call may fail - set(_find_args "${ARGN}") - list(REMOVE_ITEM _find_args "REQUIRED") - if(NOT "MODULE" IN_LIST _find_args) - find_package(${package_name} ${_find_args} BYPASS_PROVIDER PATHS "${CONAN_GENERATORS_FOLDER}" NO_DEFAULT_PATH NO_CMAKE_FIND_ROOT_PATH) + set(_find_args_${package_name} "${ARGN}") + list(REMOVE_ITEM _find_args_${package_name} "REQUIRED") + if(NOT "MODULE" IN_LIST _find_args_${package_name}) + find_package(${package_name} ${_find_args_${package_name}} BYPASS_PROVIDER PATHS "${_conan_generators_folder}" NO_DEFAULT_PATH NO_CMAKE_FIND_ROOT_PATH) + unset(_find_args_${package_name}) endif() # Invoke find_package a second time - if the first call succeeded, # this will simply reuse the result. If not, fall back to CMake default search # behaviour, also allowing modules to be searched. - set(_cmake_module_path_orig "${CMAKE_MODULE_PATH}") - list(PREPEND CMAKE_MODULE_PATH "${CONAN_GENERATORS_FOLDER}") if(NOT ${package_name}_FOUND) + list(FIND CMAKE_MODULE_PATH "${_conan_generators_folder}" _index) + if(_index EQUAL -1) + list(PREPEND CMAKE_MODULE_PATH "${_conan_generators_folder}") + endif() + unset(_index) find_package(${package_name} ${ARGN} BYPASS_PROVIDER) + list(REMOVE_ITEM CMAKE_MODULE_PATH "${_conan_generators_folder}") endif() +endmacro() - set(CMAKE_MODULE_PATH "${_cmake_module_path_orig}") - unset(_find_args) - unset(_cmake_module_path_orig) - unset(_host_profile_flags) - unset(_build_profile_flags) +#[=[ not needed by Qt Creator, and if not commented it would break the auto-setup feature + +cmake_language( + SET_DEPENDENCY_PROVIDER conan_provide_dependency + SUPPORTED_METHODS FIND_PACKAGE +) + + +macro(conan_provide_dependency_check) + set(_CONAN_PROVIDE_DEPENDENCY_INVOKED FALSE) + get_property(_CONAN_PROVIDE_DEPENDENCY_INVOKED GLOBAL PROPERTY CONAN_PROVIDE_DEPENDENCY_INVOKED) + if(NOT _CONAN_PROVIDE_DEPENDENCY_INVOKED) + message(WARNING "Conan is correctly configured as dependency provider, " + "but Conan has not been invoked. Please add at least one " + "call to `find_package()`.") + if(DEFINED CONAN_COMMAND) + # supress warning in case `CONAN_COMMAND` was specified but unused. + set(_CONAN_COMMAND ${CONAN_COMMAND}) + unset(_CONAN_COMMAND) + endif() + endif() + unset(_CONAN_PROVIDE_DEPENDENCY_INVOKED) endmacro() + +# Add a deferred call at the end of processing the top-level directory +# to check if the dependency provider was invoked at all. +cmake_language(DEFER DIRECTORY "${CMAKE_SOURCE_DIR}" CALL conan_provide_dependency_check) + +]=] + # Configurable variables for Conan profiles set(CONAN_HOST_PROFILE "default;auto-cmake" CACHE STRING "Conan host profile") set(CONAN_BUILD_PROFILE "default" CACHE STRING "Conan build profile") +set(CONAN_INSTALL_ARGS "--build=missing" CACHE STRING "Command line arguments for conan install") + +find_program(_cmake_program NAMES cmake NO_PACKAGE_ROOT_PATH NO_CMAKE_PATH NO_CMAKE_ENVIRONMENT_PATH NO_CMAKE_SYSTEM_PATH NO_CMAKE_FIND_ROOT_PATH) +if(NOT _cmake_program) + get_filename_component(PATH_TO_CMAKE_BIN "${CMAKE_COMMAND}" DIRECTORY) + set(PATH_TO_CMAKE_BIN "${PATH_TO_CMAKE_BIN}" CACHE INTERNAL "Path where the CMake executable is") +endif() + |