|
1 | | -MACRO(RUN_CONAN) |
2 | | - # Download automatically, you can also just copy the conan.cmake file |
3 | | - IF(NOT EXISTS "${CMAKE_BINARY_DIR}/conan.cmake") |
4 | | - MESSAGE(STATUS "Downloading conan.cmake from https://github.com/conan-io/cmake-conan") |
5 | | - FILE(DOWNLOAD "https://raw.githubusercontent.com/conan-io/cmake-conan/develop/conan.cmake" "${CMAKE_BINARY_DIR}/conan.cmake" TLS_VERIFY ON) |
6 | | - ENDIF() |
7 | | - |
8 | | - SET(ENV{CONAN_REVISIONS_ENABLED} 1) |
9 | | - LIST(APPEND CMAKE_MODULE_PATH ${CMAKE_BINARY_DIR}) |
10 | | - LIST(APPEND CMAKE_PREFIX_PATH ${CMAKE_BINARY_DIR}) |
11 | | - |
12 | | - INCLUDE(${CMAKE_BINARY_DIR}/conan.cmake) |
13 | | - |
14 | | - # Add (or remove) remotes as needed |
15 | | - # conan_add_remote(NAME conan-center URL https://center.conan.io) |
16 | | - CONAN_ADD_REMOTE( |
17 | | - NAME |
18 | | - conancenter |
19 | | - URL |
20 | | - https://center.conan.io |
21 | | - INDEX |
22 | | - 0) |
23 | | - |
24 | | - IF(NOT CONAN_EXPORTED) |
25 | | - # For multi configuration generators, like VS and XCode |
26 | | - IF(NOT CMAKE_CONFIGURATION_TYPES) |
27 | | - MESSAGE(STATUS "Single configuration build!") |
28 | | - SET(LIST_OF_BUILD_TYPES ${CMAKE_BUILD_TYPE}) |
29 | | - ELSE() |
30 | | - MESSAGE(STATUS "Multi-configuration build: '${CMAKE_CONFIGURATION_TYPES}'!") |
31 | | - SET(LIST_OF_BUILD_TYPES ${CMAKE_CONFIGURATION_TYPES}) |
32 | | - ENDIF() |
33 | | - |
34 | | - FOREACH(TYPE ${LIST_OF_BUILD_TYPES}) |
35 | | - MESSAGE(STATUS "Running Conan for build type '${TYPE}'") |
36 | | - |
37 | | - IF("${ProjectOptions_CONAN_PROFILE}" STREQUAL "") |
38 | | - # Detects current build settings to pass into conan |
39 | | - CONAN_CMAKE_AUTODETECT(settings BUILD_TYPE ${TYPE}) |
40 | | - SET(CONAN_SETTINGS SETTINGS ${settings}) |
41 | | - SET(CONAN_ENV ENV "CC=${CMAKE_C_COMPILER}" "CXX=${CMAKE_CXX_COMPILER}") |
42 | | - ELSE() |
43 | | - # Derive all conan settings from a conan profile |
44 | | - SET(CONAN_SETTINGS |
45 | | - PROFILE |
46 | | - ${ProjectOptions_CONAN_PROFILE} |
47 | | - SETTINGS |
48 | | - "build_type=${TYPE}") |
49 | | - # CONAN_ENV should be redundant, since the profile can set CC & CXX |
50 | | - ENDIF() |
51 | | - |
52 | | - IF("${ProjectOptions_CONAN_PROFILE}" STREQUAL "") |
53 | | - SET(CONAN_DEFAULT_PROFILE "default") |
54 | | - ELSE() |
55 | | - SET(CONAN_DEFAULT_PROFILE ${ProjectOptions_CONAN_PROFILE}) |
56 | | - ENDIF() |
57 | | - IF("${ProjectOptions_CONAN_BUILD_PROFILE}" STREQUAL "") |
58 | | - SET(CONAN_BUILD_PROFILE ${CONAN_DEFAULT_PROFILE}) |
59 | | - ELSE() |
60 | | - SET(CONAN_BUILD_PROFILE ${ProjectOptions_CONAN_BUILD_PROFILE}) |
61 | | - ENDIF() |
62 | | - |
63 | | - IF("${ProjectOptions_CONAN_HOST_PROFILE}" STREQUAL "") |
64 | | - SET(CONAN_HOST_PROFILE ${CONAN_DEFAULT_PROFILE}) |
65 | | - ELSE() |
66 | | - SET(CONAN_HOST_PROFILE ${ProjectOptions_CONAN_HOST_PROFILE}) |
67 | | - ENDIF() |
68 | | - |
69 | | - IF(CMAKE_CROSSCOMPILING AND NOT CONAN_ARCHITECTURE) |
70 | | - MESSAGE(FATAL_ERROR "The variable CONAN_ARCHITECTURE must be specified for cross-compiling") |
71 | | - ENDIF() |
72 | | - |
73 | | - IF(CMAKE_CROSSCOMPILING) |
74 | | - CONAN_CMAKE_RUN( |
75 | | - CONANFILE conanfile_embedded.txt |
76 | | - BASIC_SETUP |
77 | | - ARCH ${CONAN_ARCHITECTURE} |
78 | | - ENV CC=${CMAKE_C_COMPILER} |
79 | | - ENV CXX=${CMAKE_CXX_COMPILER} |
80 | | - ENV CFLAGS=${CMAKE_C_FLAGS} |
81 | | - ENV CXXFLAGS=${CMAKE_CXX_FLAGS} |
82 | | - PROFILE_AUTO ALL |
83 | | - BUILD missing |
84 | | - ) |
85 | | - ELSE() |
86 | | - CONAN_CMAKE_INSTALL( |
87 | | - PATH_OR_REFERENCE |
88 | | - ${CMAKE_SOURCE_DIR} |
89 | | - BUILD |
90 | | - missing |
91 | | - # Pass compile-time configured options into conan |
92 | | - OPTIONS |
93 | | - ${ProjectOptions_CONAN_OPTIONS} |
94 | | - # Pass CMake compilers to Conan |
95 | | - ${CONAN_ENV} |
96 | | - PROFILE_HOST |
97 | | - ${CONAN_HOST_PROFILE} |
98 | | - PROFILE_BUILD |
99 | | - ${CONAN_BUILD_PROFILE} |
100 | | - # Pass either autodetected settings or a conan profile |
101 | | - ${CONAN_SETTINGS} |
102 | | - ${OUTPUT_QUIET}) |
103 | | - ENDIF() |
104 | | - ENDFOREACH() |
105 | | - |
106 | | - ENDIF() |
107 | | - # standard conan installation, in which deps will be defined in conanfile. It is not necessary to call conan again, as it is already running. |
108 | | - IF(EXISTS "${CMAKE_BINARY_DIR}/conanbuildinfo.cmake") |
109 | | - INCLUDE(${CMAKE_BINARY_DIR}/conanbuildinfo.cmake) |
110 | | - ELSE() |
111 | | - MESSAGE(FATAL_ERROR "Could not set up conan because \"${CMAKE_BINARY_DIR}/conanbuildinfo.cmake\" does not exist") |
112 | | - ENDIF() |
113 | | - CONAN_BASIC_SETUP(TARGETS) |
114 | | -ENDMACRO() |
| 1 | +# Download automatically, you can also just copy the conan.cmake file |
| 2 | +IF(NOT EXISTS "${CMAKE_BINARY_DIR}/conan.cmake") |
| 3 | + MESSAGE(STATUS "Downloading conan.cmake from https://github.com/conan-io/cmake-conan") |
| 4 | + FILE(DOWNLOAD "https://raw.githubusercontent.com/conan-io/cmake-conan/develop2/conan_provider.cmake" "${CMAKE_BINARY_DIR}/conan.cmake" TLS_VERIFY ON) |
| 5 | +ENDIF() |
| 6 | + |
| 7 | +LIST(APPEND CMAKE_MODULE_PATH ${CMAKE_BINARY_DIR}) |
| 8 | +SET(CMAKE_PROJECT_TOP_LEVEL_INCLUDES "${CMAKE_BINARY_DIR}/conan.cmake") |
0 commit comments