conanfile.py.jinja 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. from conan import ConanFile
  2. {%- if use_conan2 %}
  3. from conan.tools.files import copy
  4. from conan.tools.cmake import CMakeToolchain, CMakeDeps, cmake_layout
  5. {%- endif %}
  6. class App(ConanFile):
  7. settings = "os", "compiler", "build_type", "arch"
  8. options = {
  9. {%- for conan_option in conan.options -%}
  10. {%- set option_and_value = rsplit(conan_option, "=", 2) %}"{{ option_and_value[0] }}": "{{ option_and_value[1] }}"
  11. {%- if not loop.last -%}, {% endif -%}
  12. {%- endfor -%}
  13. }
  14. requires =
  15. {%- for conan_require in conan.requires %} "{{ conan_require }}"
  16. {%- if not loop.last -%},{%- endif -%}
  17. {%- endfor %}
  18. tool_requires =
  19. {%- for conan_tool_require in conan.tool_requires %} "{{ conan_tool_require }}"
  20. {%- if not loop.last -%},{%- endif -%}
  21. {%- endfor %}
  22. {%- if use_conan2 %}
  23. def generate(self):
  24. CMakeDeps(self).generate()
  25. CMakeToolchain(self).generate()
  26. {%- for conan_generator in conan.generators %}
  27. {{ conan_generator }}(self).generate()
  28. {%- endfor %}
  29. for dep in self.dependencies.values():
  30. if dep.cpp_info.bindirs:
  31. {%- for conan_import in conan.imports -%}
  32. {%- set search_and_dstdir = rsplit(conan_import|trim, "->", 2) -%}
  33. {%- set search = search_and_dstdir[0]|trim -%}
  34. {%- set dstdir = search_and_dstdir[1]|trim -%}
  35. {%- set srcdir_and_mask = rsplit(search, ",", 2) -%}
  36. {%- set srcdir = srcdir_and_mask[0]|trim -%}
  37. {%- set mask = srcdir_and_mask[1]|trim %}
  38. copy(self, pattern="{{ mask }}", src=dep.cpp_info.bindirs[0], dst=self.build_folder + "../../../../{{ dstdir }}")
  39. {%- endfor %}
  40. def layout(self):
  41. cmake_layout(self)
  42. {%- else -%}
  43. generators = "cmake_find_package", "cmake_paths"
  44. def imports(self):
  45. {%- for conan_import in conan.imports -%}
  46. {%- set search_and_dstdir = rsplit(conan_import|trim, "->", 2) -%}
  47. {%- set search = search_and_dstdir[0]|trim -%}
  48. {%- set dstdir = search_and_dstdir[1]|trim -%}
  49. {%- set srcdir_and_mask = rsplit(search, ",", 2) -%}
  50. {%- set srcdir = srcdir_and_mask[0]|trim -%}
  51. {%- set mask = srcdir_and_mask[1]|trim %}
  52. self.copy(pattern="{{ mask }}", src="{{ srcdir }}", dst="{{ dstdir }}")
  53. {%- endfor %}
  54. {%- endif %}