Update Conan recipe

Signed-off-by: Uilian Ries <uilianries@gmail.com>
This commit is contained in:
Uilian Ries
2019-11-20 16:33:50 -03:00
committed by Mateusz Pusz
parent 1540f4bcd9
commit 7b19559dfc
3 changed files with 25 additions and 16 deletions

View File

@@ -23,6 +23,10 @@
cmake_minimum_required(VERSION 3.8) cmake_minimum_required(VERSION 3.8)
project(units) project(units)
# project options
option(BUILD_TESTS "Build utils tests" ON)
option(BUILD_EXAMPLES "Build utils examples" ON)
# set path to custom cmake modules # set path to custom cmake modules
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake") list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
@@ -39,7 +43,11 @@ include(common/cmake/compile_flags)
add_subdirectory(src) add_subdirectory(src)
# add unit tests # add unit tests
add_subdirectory(test) if (BUILD_TESTS)
add_subdirectory(test)
endif()
# add usage example # add usage example
add_subdirectory(example) if (BUILD_EXAMPLES)
add_subdirectory(example)
endif()

View File

@@ -21,9 +21,10 @@
# SOFTWARE. # SOFTWARE.
from conans import ConanFile, CMake, tools from conans import ConanFile, CMake, tools
from conans.tools import load from conans.tools import load, Version
from conans.errors import ConanInvalidConfiguration from conans.errors import ConanInvalidConfiguration
import re import re
import os
def get_version(): def get_version():
@@ -43,39 +44,39 @@ class UnitsConan(ConanFile):
url = "https://github.com/mpusz/units" url = "https://github.com/mpusz/units"
description = "Physical Units library for C++" description = "Physical Units library for C++"
exports = ["LICENSE.md"] exports = ["LICENSE.md"]
exports = ["*"]
settings = "os", "compiler", "build_type", "arch" settings = "os", "compiler", "build_type", "arch"
requires = ( requires = (
"range-v3/0.9.1@ericniebler/stable", "range-v3/0.9.1@ericniebler/stable",
"Catch2/2.10.0@catchorg/stable", "Catch2/2.10.0@catchorg/stable",
"fmt/6.0.0" "fmt/6.0.0"
) )
scm = {
"type": "git",
"url": "auto",
"revision": "auto",
"submodule": "recursive"
}
generators = "cmake" generators = "cmake"
@property
def _run_tests(self):
return tools.get_env("CONAN_RUN_TESTS", False)
def configure(self): def configure(self):
if self.settings.compiler != "gcc": if self.settings.compiler != "gcc":
raise ConanInvalidConfiguration("Library works only with gcc") raise ConanInvalidConfiguration("Library works only with gcc")
if int(self.settings.compiler.version.value) < 9: if Version(self.settings.compiler.version) < "9":
raise ConanInvalidConfiguration("Library requires at least gcc-9") raise ConanInvalidConfiguration("Library requires at least gcc-9")
if self.settings.compiler.cppstd not in ["20", "gnu20"]: if self.settings.compiler.cppstd not in [None, "20", "gnu20"]:
raise ConanInvalidConfiguration("Library requires at least C++20 support") raise ConanInvalidConfiguration("Library requires at least C++20 support")
def _configure_cmake(self): def _configure_cmake(self):
cmake = CMake(self) cmake = CMake(self)
if tools.get_env("CONAN_RUN_TESTS", False): cmake.definitions["BUILD_TESTS"] = self._run_tests
cmake.configure() cmake.definitions["BUILD_EXAMPLES"] = self._run_tests
else: cmake.configure()
cmake.configure(source_dir="%s/src" % self.source_folder)
return cmake return cmake
def build(self): def build(self):
cmake = self._configure_cmake() cmake = self._configure_cmake()
cmake.build() cmake.build()
if self._run_tests:
self.run(os.path.join("bin", "unit_tests_runtime"), run_environment=True)
def package(self): def package(self):
self.copy(pattern="*license*", dst="licenses", excludes="cmake/common/*", ignore_case=True, keep_path=False) self.copy(pattern="*license*", dst="licenses", excludes="cmake/common/*", ignore_case=True, keep_path=False)