Skip to content

Instantly share code, notes, and snippets.

@SeanSnyders
Created June 15, 2021 23:48
Show Gist options
  • Save SeanSnyders/30f73a76736864977bd88c0212f55fd7 to your computer and use it in GitHub Desktop.
Save SeanSnyders/30f73a76736864977bd88c0212f55fd7 to your computer and use it in GitHub Desktop.
Conan recipe to illustrate CMakeDeps generator bug in Conan 1.37.2 for not include external lib CMake config file
from conans import ConanFile, CMake, tools
from conan.tools.cmake import CMakeDeps
class TestRecipe(ConanFile):
name = "ConanCMakeDepsGenerator"
version = "0.1.0"
settings = "os", "compiler", "build_type", "arch"
generators = "CMakeDeps", "cmake_paths", "virtualenv"
_cmake = None
def source(self):
self.output.info(f"Getting source in TestRecipe.source()....")
git = tools.Git(folder="hello")
git.clone("https://github.com/conan-io/hello.git", "master")
tools.replace_in_file("hello/CMakeLists.txt", "PROJECT(HelloWorld)",
'''PROJECT(HelloWorld)
find_package(GTest CONFIG REQUIRED)
find_package(PureCMakePackage CONFIG REQUIRED)
message(STATUS "PureCMakePackage PureCMakePackage_PACKAGE_FOLDER_RELEASE=${PureCMakePackage_PACKAGE_FOLDER_RELEASE}")
message(STATUS "PureCMakePackage PureCMakePackage_PACKAGE_FOLDER_DEBUG=${PureCMakePackage_PACKAGE_FOLDER_DEBUG}")
message(STATUS "PureCMakePackage CMAKE_PURECMAKEPACKAGE_PACKAGE_PATH=${CMAKE_PURECMAKEPACKAGE_PACKAGE_PATH}")
include(${CMAKE_PURECMAKEPACKAGE_PACKAGE_PATH}/utils/Utils.cmake)
''')
def build_requirements(self):
self.output.info(f"Generators in TestRecipe.build_requirements(): {self.generators}")
self.build_requires("cmake/3.19.4")
self.build_requires("gtest/1.10.0")
self.build_requires("PureCMakePackage/0.1.0@ssnyder/testing")
self.output.info(f"self.build_requires={type(self.build_requires)}")
self.output.info(f"self.build_requires={self.build_requires}")
def generate(self):
self.output.info("Running generate in TestRecipe...")
cmake = CMakeDeps(self)
cmake.build_context_activated = ["cmake", "gtest", "PureCMakePackage"]
cmake.build_context_build_modules = ["gtest", "cmake", "PureCMakePackage"]
cmake.generate()
def _configure_cmake(self):
if self._cmake:
return self._cmake
self._cmake = CMake(self)
self._cmake.verbose = True
self.output.info(f"cmake.defs: {self._cmake.definitions}")
self._cmake.configure(source_folder="./hello")
return self._cmake
def build(self):
cmake = self._configure_cmake()
cmake.build()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment