mirror of
https://github.com/catchorg/Catch2.git
synced 2024-11-22 13:26:10 +01:00
Add support for Components
This commit is contained in:
parent
67a9561fb5
commit
3a15433d52
@ -1,19 +1,12 @@
|
|||||||
cmake_minimum_required(VERSION 3.2.0)
|
cmake_minimum_required(VERSION 3.2.0)
|
||||||
project(test_package CXX)
|
project(test_package CXX)
|
||||||
|
|
||||||
# We set it only for the convenience of calling the executable
|
include("${CMAKE_BINARY_DIR}/conanbuildinfo.cmake")
|
||||||
# in the package test function
|
conan_basic_setup()
|
||||||
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)
|
find_package(Catch2 REQUIRED CONFIG)
|
||||||
|
|
||||||
add_executable(${PROJECT_NAME} test_package.cpp)
|
add_executable(${PROJECT_NAME} test_package.cpp)
|
||||||
# Note: Conan 1.21 doesn't support granular target generation yet.
|
|
||||||
# The Main library would be included into the unified target.
|
target_link_libraries(${PROJECT_NAME} Catch2::Catch2WithMain)
|
||||||
# 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)
|
set_target_properties(${PROJECT_NAME} PROPERTIES CXX_STANDARD 14)
|
||||||
|
@ -6,7 +6,7 @@ import os
|
|||||||
|
|
||||||
class TestPackageConan(ConanFile):
|
class TestPackageConan(ConanFile):
|
||||||
settings = "os", "compiler", "build_type", "arch"
|
settings = "os", "compiler", "build_type", "arch"
|
||||||
generators = "cmake_find_package_multi"
|
generators = "cmake_find_package_multi", "cmake"
|
||||||
|
|
||||||
def build(self):
|
def build(self):
|
||||||
cmake = CMake(self)
|
cmake = CMake(self)
|
||||||
@ -14,6 +14,7 @@ class TestPackageConan(ConanFile):
|
|||||||
cmake.build()
|
cmake.build()
|
||||||
|
|
||||||
def test(self):
|
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")
|
bin_path = os.path.join("bin", "test_package")
|
||||||
self.run("%s -s" % bin_path, run_environment=True)
|
self.run("%s -s" % bin_path, run_environment=True)
|
||||||
|
20
conanfile.py
20
conanfile.py
@ -1,7 +1,6 @@
|
|||||||
#!/usr/bin/env python
|
#!/usr/bin/env python
|
||||||
from conans import ConanFile, CMake, tools
|
from conans import ConanFile, CMake, tools
|
||||||
|
|
||||||
|
|
||||||
class CatchConan(ConanFile):
|
class CatchConan(ConanFile):
|
||||||
name = "catch2"
|
name = "catch2"
|
||||||
description = "A modern, C++-native, framework for unit-tests, TDD and BDD"
|
description = "A modern, C++-native, framework for unit-tests, TDD and BDD"
|
||||||
@ -15,9 +14,6 @@ class CatchConan(ConanFile):
|
|||||||
|
|
||||||
settings = "os", "compiler", "build_type", "arch"
|
settings = "os", "compiler", "build_type", "arch"
|
||||||
|
|
||||||
options = {"with_main": [True, False]}
|
|
||||||
default_options = {"with_main": True}
|
|
||||||
|
|
||||||
generators = "cmake"
|
generators = "cmake"
|
||||||
|
|
||||||
def _configure_cmake(self):
|
def _configure_cmake(self):
|
||||||
@ -45,11 +41,17 @@ conan_basic_setup()'''.format(line_to_replace, self.install_folder.replace("\\",
|
|||||||
cmake = self._configure_cmake()
|
cmake = self._configure_cmake()
|
||||||
cmake.install()
|
cmake.install()
|
||||||
|
|
||||||
def package_id(self):
|
|
||||||
del self.info.options.with_main
|
|
||||||
|
|
||||||
def package_info(self):
|
def package_info(self):
|
||||||
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"] = "Catch2"
|
||||||
self.cpp_info.names["cmake_find_package_multi"] = "Catch2"
|
self.cpp_info.names["cmake_find_package_multi"] = "Catch2"
|
||||||
|
# Catch2
|
||||||
|
self.cpp_info.components["catch2base"].names["cmake_find_package"] = "Catch2"
|
||||||
|
self.cpp_info.components["catch2base"].names["cmake_find_package_multi"] = "Catch2"
|
||||||
|
self.cpp_info.components["catch2base"].names["pkg_config"] = "Catch2"
|
||||||
|
self.cpp_info.components["catch2base"].libs = ["Catch2"]
|
||||||
|
# Catch2WithMain
|
||||||
|
self.cpp_info.components["catch2main"].names["cmake_find_package"] = "Catch2WithMain"
|
||||||
|
self.cpp_info.components["catch2main"].names["cmake_find_package_multi"] = "Catch2WithMain"
|
||||||
|
self.cpp_info.components["catch2main"].names["pkg_config"] = "Catch2WithMain"
|
||||||
|
self.cpp_info.components["catch2main"].libs = ["Catch2Main"]
|
||||||
|
self.cpp_info.components["catch2main"].requires = ["catch2base"]
|
||||||
|
Loading…
Reference in New Issue
Block a user