@@ -19,15 +19,51 @@ class App(ConanFile):
19
19
{% - endfor -%}
20
20
}
21
21
22
- requires =
23
- {% - for conan_require in conan .requires %} "{{ conan_require }}"
24
- {% - if not loop .last -%} ,{% - endif -%}
25
- {% - endfor %}
26
-
27
- tool_requires =
28
- {% - for conan_tool_require in conan .tool_requires %} "{{ conan_tool_require }}"
29
- {% - if not loop .last -%} ,{% - endif -%}
30
- {% - endfor %}
22
+ {% - set has_conan_os_depends_requires = conan .os_depends |selectattr ('requires' )|map (attribute ='requires' )|sum |length -%}
23
+ {% - if (conan .requires |length ) or (has_conan_os_depends_requires ) %}
24
+
25
+ def requirements(self):
26
+ {% - if (conan .requires |length ) %}
27
+ {% - for conan_require in conan .requires %}
28
+ self.requires("{{ conan_require }}")
29
+ {% - endfor -%}
30
+ {% - endif -%}
31
+
32
+ {% - if (has_conan_os_depends_requires ) -%}
33
+ {% - for conan_os_depend in conan .os_depends |selectattr ('requires' ) %}
34
+ {% - if (conan_os_depend .requires |length ) %}
35
+ if self.settings.os == "{{ conan_os_depend.os }}":
36
+ {% - for conan_require in conan_os_depend .requires %}
37
+ self.requires("{{ conan_require }}")
38
+ {% - endfor -%}
39
+ {% - endif -%}
40
+ {% - endfor -%}
41
+ {% - endif -%}
42
+ {% - endif -%}
43
+
44
+ {% - set has_conan_os_depends_tool_requires = conan .os_depends |selectattr ('tool_requires' )|map (attribute ='tool_requires' )|sum |length -%}
45
+ {% - if (conan .tool_requires |length ) or (has_conan_os_depends_tool_requires ) %}
46
+
47
+ def build_requirements(self):
48
+ {% - if (conan .tool_requires |length ) %}
49
+ {% - for conan_tool_require in conan .tool_requires %}
50
+ self.tool_requires("{{ conan_tool_require }}")
51
+ {% - endfor -%}
52
+ {% - endif -%}
53
+
54
+ {% - if (has_conan_os_depends_tool_requires ) -%}
55
+ {% - for conan_os_depend in conan .os_depends |selectattr ('tool_requires' ) %}
56
+ {% - if (conan_os_depend .tool_requires |length ) %}
57
+ if self.settings.os == "{{ conan_os_depend.os }}":
58
+ {% - for conan_tool_require in conan_os_depend .tool_requires %}
59
+ self.tool_requires("{{ conan_tool_require }}")
60
+ {% - endfor -%}
61
+ {% - endif -%}
62
+ {% - endfor -%}
63
+ {% - endif -%}
64
+ {% - endif -%}
65
+
66
+ {% - set has_conan_os_depends_imports = conan .os_depends |selectattr ('imports' )|map (attribute ='imports' )|sum |length -%}
31
67
32
68
{% - if use_conan 2 %}
33
69
@@ -40,32 +76,47 @@ class App(ConanFile):
40
76
41
77
for dep in self.dependencies.values():
42
78
if dep.cpp_info.bindirs:
43
- {% - for conan_import in conan .imports -%}
44
- {% - set search_and_dstdir = rsplit (conan_import |trim , "->" , 2) -%}
45
- {% - set search = search_and_dstdir [0]|trim -%}
46
- {% - set dstdir = search_and_dstdir [1]|trim -%}
47
- {% - set srcdir_and_mask = rsplit (search , "," , 2) -%}
48
- {% - set srcdir = srcdir_and_mask [0]|trim -%}
49
- {% - set mask = srcdir_and_mask [1]|trim %}
50
- copy(self, pattern="{{ mask }}", src=dep.cpp_info.bindirs[0], dst=self.build_folder + "../../../../{{ dstdir }}")
51
- {% - endfor %}
79
+ {% - if conan .imports |length -%}
80
+ {% - set conan_imports = conan .imports -%}
81
+ {% - set shift = "" -%}
82
+ {% - include "[generator]/conan_imports.jinja" -%}
83
+ {% - endif -%}
84
+ {% - if (has_conan_os_depends_imports ) -%}
85
+ {% - for conan_os_depend in conan .os_depends |selectattr ('imports' ) %}
86
+ {% - if (conan_os_depend .imports |length ) %}
87
+ if self.settings.os == "{{ conan_os_depend.os }}":
88
+ {% - set conan_imports = conan_os_depend .imports -%}
89
+ {% - set shift = " " -%}
90
+ {% - include "[generator]/conan_imports.jinja" -%}
91
+ {% - endif -%}
92
+ {% - endfor -%}
93
+ {% - endif -%}
52
94
53
95
def layout(self):
54
96
cmake_layout(self)
55
97
56
- {% - else - %}
98
+ {% - else %}
57
99
58
100
generators = "cmake_find_package", "cmake_paths"
59
101
60
102
def imports(self):
61
- {% - for conan_import in conan .imports -%}
62
- {% - set search_and_dstdir = rsplit (conan_import |trim , "->" , 2) -%}
63
- {% - set search = search_and_dstdir [0]|trim -%}
64
- {% - set dstdir = search_and_dstdir [1]|trim -%}
65
- {% - set srcdir_and_mask = rsplit (search , "," , 2) -%}
66
- {% - set srcdir = srcdir_and_mask [0]|trim -%}
67
- {% - set mask = srcdir_and_mask [1]|trim %}
68
- self.copy(pattern="{{ mask }}", src="{{ srcdir }}", dst="{{ dstdir }}")
69
- {% - endfor %}
70
-
71
- {% - endif %}
103
+ {% - if conan .imports |length -%}
104
+ {% - set conan_imports = conan .imports -%}
105
+ {% - set shift = "" -%}
106
+ {% - include "[generator]/conan_imports.jinja" -%}
107
+ {% - endif -%}
108
+
109
+ {% - if (has_conan_os_depends_imports ) -%}
110
+ {% - for conan_os_depend in conan .os_depends |selectattr ('imports' ) %}
111
+ {% - if (conan_os_depend .imports |length ) %}
112
+ if self.settings.os == "{{ conan_os_depend.os }}":
113
+ {% - set conan_imports = conan_os_depend .imports -%}
114
+ {% - set shift = " " -%}
115
+ {% - include "[generator]/conan_imports.jinja" -%}
116
+ {% - endif -%}
117
+ {% - endfor -%}
118
+ {% - endif -%}
119
+
120
+ {% - endif -%}
121
+
122
+ {% - include "[generator]/debug_conan.jinja" ignore missing %}
0 commit comments