-
-
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
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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