Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- cmake_minimum_required(VERSION 3.16)
- project(conan_test)
- function(conan_install file_out)
- set(CONAN_CMAKE_MODULE_DIR_PATH "${CMAKE_BINARY_DIR}/ConanFiles")
- set(CONAN_PROFILES_DIR_PATH "${CMAKE_SOURCE_DIR}/profiles")
- set(CONAN_FILE_DIR "${CMAKE_SOURCE_DIR}")
- set(CONAN_FILE_PATH "${CMAKE_SOURCE_DIR}/conanfile.txt")
- set(CONAN_CMAKE_MODULE_MULTI_PATH "${CONAN_CMAKE_MODULE_DIR_PATH}/conanbuildinfo_multi.cmake")
- set(CONAN_CMAKE_MODULE_RELEASE_PATH "${CONAN_CMAKE_MODULE_DIR_PATH}/conanbuildinfo_release.cmake")
- set(CONAN_CMAKE_MODULE_DEBUG_PATH "${CONAN_CMAKE_MODULE_DIR_PATH}/conanbuildinfo_debug.cmake")
- message(STATUS ${CONAN_FILE_PATH} " - " ${CONAN_CMAKE_MODULE_MULTI_PATH})
- if(NOT EXISTS ${CONAN_CMAKE_MODULE_MULTI_PATH}
- OR "${CONAN_FILE_PATH}" IS_NEWER_THAN "${CONAN_CMAKE_MODULE_MULTI_PATH}"
- OR "${CONAN_FILE_PATH}" IS_NEWER_THAN "${CONAN_CMAKE_MODULE_RELEASE_PATH}"
- OR "${CONAN_FILE_PATH}" IS_NEWER_THAN "${CONAN_CMAKE_MODULE_DEBUG_PATH}")
- message(STATUS "Installing dependencies...")
- file(REMOVE_RECURSE "${CONAN_CMAKE_MODULE_DIR_PATH}")
- function(conan_install_profile profile)
- message(STATUS "Installing dependencies for profile: ${profile}")
- execute_process(
- OUTPUT_QUIET ERROR_VARIABLE error_out
- COMMAND conan install "${CONAN_FILE_DIR}"
- -if "${CONAN_CMAKE_MODULE_DIR_PATH}"
- --profile "${CONAN_PROFILES_DIR_PATH}/${profile}"
- )
- if (error_out)
- message(FATAL_ERROR "Failed to install conan dependencies for profile: ${profile}\n${error_out}")
- endif()
- message(STATUS "Installing dependencies for profile: ${profile} -- done")
- endfunction()
- conan_install_profile(release)
- conan_install_profile(debug)
- else()
- message(STATUS "Conan configuration allready exists - using it")
- endif()
- set(${file_out} ${CONAN_CMAKE_MODULE_MULTI_PATH} PARENT_SCOPE)
- endfunction()
- conan_install(CONAN_CMAKE_FILE)
- include(${CONAN_CMAKE_FILE})
- unset(CONAN_CMAKE_FILE)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement