conanfile.py 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. from conan import ConanFile
  2. from conan.tools.cmake import CMakeToolchain, CMake, cmake_layout, CMakeDeps
  3. from conan.tools.files import copy
  4. import conan
  5. import os
  6. import sys
  7. class ConanTutorialRecipe(ConanFile):
  8. settings = "os", "compiler", "build_type", "arch"
  9. #generators = "CMakeDeps", "CMakeToolchain"
  10. preset_name = os.getenv('CONAN_PRESET_NAME')
  11. def requirements(self):
  12. self.requires("catch2/3.6.0");
  13. self.requires("glm/0.9.9.8");
  14. self.requires("stb/cci.20240213");
  15. self.requires("nlohmann_json/3.11.3");
  16. self.requires("meshoptimizer/0.20");
  17. def layout(self):
  18. '''
  19. By default, this will set up a "build" folder in the src folder and
  20. create the build files in a folder that is dependent on the compiler/version/buildtype
  21. For the CI environment, you can custom define the preset name so that
  22. the folder that is created has a single name to avoid having to
  23. add create conditoinals in your CI logic because of the preset name
  24. conan install . -s build_type=Debug --build missing -c:h "user:preset_name=ci"
  25. '''
  26. # This makes sure that the generated files are
  27. # generated in the current working directory
  28. self.preset_name = self.conf.get("user:preset_name", default=None)
  29. print(self.build_folder)
  30. if self.preset_name is None:
  31. self.folders.build_folder_vars = ["settings.compiler", "settings.compiler.version", "settings.build_type"]
  32. else:
  33. self.folders.build_folder_vars = ["self.preset_name"]
  34. cmake_layout(self)
  35. def generate(self):
  36. deps = CMakeDeps(self)
  37. deps.generate()
  38. tc = CMakeToolchain(self)
  39. tc.generate()
  40. # Used to copy additional files from a recipe into the build folder
  41. #copy(self, "res/*", self.dependencies["imgui"].package_folder, os.path.join(self.build_folder, "imgui_src") )