Skip to content

Commit

Permalink
[conan] Fix the Conan package for multiple static library use
Browse files Browse the repository at this point in the history
  • Loading branch information
Minimonium authored and horenmar committed Jan 25, 2020
1 parent 2e1ce37 commit 49e000b
Show file tree
Hide file tree
Showing 4 changed files with 26 additions and 10 deletions.
2 changes: 1 addition & 1 deletion .conan/build.py
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ def stable_branch_pattern(self):
def reference(self):
""" Read project version from branch create Conan reference
"""
return os.getenv("CONAN_REFERENCE", "Catch2/{}".format(self._version))
return os.getenv("CONAN_REFERENCE", "catch2/{}".format(self._version))

@property
def channel(self):
Expand Down
14 changes: 11 additions & 3 deletions .conan/test_package/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,11 +1,19 @@
cmake_minimum_required(VERSION 3.2.0)
project(test_package CXX)

include(${CMAKE_BINARY_DIR}/conanbuildinfo.cmake)
conan_basic_setup(TARGETS)
# We set it only for the convenience of calling the executable
# in the package test function
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/bin)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE ${CMAKE_RUNTIME_OUTPUT_DIRECTORY})
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELWITHDEBINFO ${CMAKE_RUNTIME_OUTPUT_DIRECTORY})
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_MINSIZEREL ${CMAKE_RUNTIME_OUTPUT_DIRECTORY})
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG ${CMAKE_RUNTIME_OUTPUT_DIRECTORY})

find_package(Catch2 REQUIRED CONFIG)

add_executable(${PROJECT_NAME} test_package.cpp)
target_link_libraries(${PROJECT_NAME} CONAN_PKG::Catch2Main)
# Note: Conan 1.21 doesn't support granular target generation yet.
# The Main library would be included into the unified target.
# It's controlled by the `with_main` option in the recipe.
target_link_libraries(${PROJECT_NAME} Catch2::Catch2)
set_target_properties(${PROJECT_NAME} PROPERTIES CXX_STANDARD 14)
4 changes: 2 additions & 2 deletions .conan/test_package/conanfile.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,14 @@

class TestPackageConan(ConanFile):
settings = "os", "compiler", "build_type", "arch"
generators = "cmake"
generators = "cmake_find_package_multi"

def build(self):
cmake = CMake(self)
cmake.configure()
cmake.build()

def test(self):
assert os.path.isfile(os.path.join(self.deps_cpp_info["Catch2"].rootpath, "licenses", "LICENSE.txt"))
assert os.path.isfile(os.path.join(self.deps_cpp_info["catch2"].rootpath, "licenses", "LICENSE.txt"))
bin_path = os.path.join("bin", "test_package")
self.run("%s -s" % bin_path, run_environment=True)
16 changes: 12 additions & 4 deletions conanfile.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,16 +3,20 @@


class CatchConan(ConanFile):
name = "Catch2"
description = "A modern, C++-native, header-only, framework for unit-tests, TDD and BDD"
name = "catch2"
description = "A modern, C++-native, framework for unit-tests, TDD and BDD"
topics = ("conan", "catch2", "unit-test", "tdd", "bdd")
url = "https://github.com/catchorg/Catch2"
homepage = url
license = "BSL-1.0"

exports = "LICENSE.txt"
exports_sources = ("src/*", "CMakeLists.txt", "CMake/*", "extras/*")

settings = "os", "compiler", "build_type", "arch"
generators = "cmake"

options = {"with_main": [True, False]}
default_options = {"with_main": True}

def _configure_cmake(self):
cmake = CMake(self)
Expand All @@ -31,7 +35,11 @@ def package(self):
cmake = self._configure_cmake()
cmake.install()

def package_id(self):
del self.info.options.with_main

def package_info(self):
self.cpp_info.libs = ['Catch2Main', 'Catch2']
self.cpp_info.libs = [
'Catch2Main', 'Catch2'] if self.options.with_main else ['Catch2']
self.cpp_info.names["cmake_find_package"] = "Catch2"
self.cpp_info.names["cmake_find_package_multi"] = "Catch2"

0 comments on commit 49e000b

Please sign in to comment.