Skip to content
Snippets Groups Projects
Commit 13da52ec authored by POTIER Frederic's avatar POTIER Frederic
Browse files

Conan2 recipe

parent 1eb8fff6
No related branches found
No related tags found
No related merge requests found
* text=auto eol=lf
target
build
CMakeUserPresets.json
cmake_minimum_required(VERSION 3.15)
project (timiqlib)
option(BUILD_SHARED_LIBS "Build using shared libraries" ON)
find_package(cpptango CONFIG REQUIRED)
find_package(yat CONFIG REQUIRED)
find_package(curl CONFIG REQUIRED)
add_compile_definitions(
PROJECT_NAME=${PROJECT_NAME}
PROJECT_VERSION=${PROJECT_VERSION}
)
file(GLOB_RECURSE sources
src/*.cpp
)
set(includedirs
src
include
)
add_library(timiqlib ${sources})
target_include_directories(timiqlib PRIVATE ${includedirs})
target_link_libraries(timiqlib PRIVATE cpptango::cpptango)
target_link_libraries(timiqlib PRIVATE yat::yat)
target_link_libraries(timiqlib PRIVATE curl::curl)
if(MAJOR_VERSION)
set_target_properties(timiqlib PROPERTIES VERSION ${PROJECT_VERSION} SOVERSION ${MAJOR_VERSION})
endif()
install (DIRECTORY ${CMAKE_SOURCE_DIR}/include/timiq/ DESTINATION include
FILES_MATCHING PATTERN "*/*.h" PATTERN "*/*"
)
install (DIRECTORY ${CMAKE_SOURCE_DIR}/src/ DESTINATION include
FILES_MATCHING PATTERN "*/*.h"
)
install (DIRECTORY ${CMAKE_SOURCE_DIR}/include/ DESTINATION include
FILES_MATCHING PATTERN "*/*.h" PATTERN "*/*"
)
install(TARGETS timiqlib LIBRARY DESTINATION ${LIB_INSTALL_DIR})
conan.create(['el6-gcc44-x86-shared'])
from conan import ConanFile
from conan.tools.cmake import CMakeToolchain, CMake, cmake_layout, CMakeDeps
class timiqlibRecipe(ConanFile):
name = "timiqlib"
version = "1.0.2"
package_type = "library"
user = "soleil"
# Optional metadata
license = "GPL-2"
author = "Gouno", "Buteau"
url = "https://gitlab.synchrotron-soleil.fr/software-control-system/libraries/timiqlib"
description = "TimIQ library"
topics = ("utility", "control-system")
# Binary configuration
settings = "os", "compiler", "build_type", "arch"
options = {"shared": [True, False], "fPIC": [True, False]}
default_options = {"shared": False, "fPIC": True}
# Sources are located in the same place as this recipe, copy them to the recipe
exports_sources = "CMakeLists.txt", "src/**", "include/**"
def requirements(self):
self.requires("cpptango/9.2.5@soleil/stable")
self.requires("yat/[>=1.0]@soleil/stable")
self.requires("curl/7.37.0@soleil/stable")
def config_options(self):
if self.settings.os == "Windows":
self.options.rm_safe("fPIC")
def configure(self):
if self.options.shared:
self.options.rm_safe("fPIC")
def layout(self):
cmake_layout(self)
def generate(self):
deps = CMakeDeps(self)
deps.generate()
tc = CMakeToolchain(self)
major, minor, patch = map(int, self.version.split('.'))
tc.variables["PROJECT_NAME"] = self.name
tc.variables["PROJECT_VERSION"] = self.version
tc.variables["MAJOR_VERSION"] = major
tc.variables["MINOR_VERSION"] = minor
tc.variables["PATCH_VERSION"] = patch
tc.generate()
def build(self):
cmake = CMake(self)
cmake.configure()
cmake.build()
def package(self):
cmake = CMake(self)
cmake.install()
def package_info(self):
self.cpp_info.libs = ["timiqlib"]
cmake_minimum_required(VERSION 3.15)
project(PackageTest CXX)
find_package(timiqlib CONFIG REQUIRED)
find_package(cpptango CONFIG REQUIRED)
find_package(yat CONFIG REQUIRED)
find_package(curl CONFIG REQUIRED)
add_executable(test_package src/test_package.cpp)
target_link_libraries(test_package timiqlib::timiqlib)
target_link_libraries(test_package yat::yat)
target_link_libraries(test_package cpptango::cpptango)
target_link_libraries(test_package curl::curl)
import os
from conan import ConanFile
from conan.tools.cmake import CMake, cmake_layout
from conan.tools.build import can_run
class TestPackageConan(ConanFile):
settings = "os", "compiler", "build_type", "arch"
generators = "CMakeDeps", "CMakeToolchain"
def requirements(self):
self.requires(self.tested_reference_str)
self.requires("cpptango/9.2.5@soleil/stable")
self.requires("yat/[>=1.0]@soleil/stable")
self.requires("curl/7.37.0@soleil/stable")
def build(self):
cmake = CMake(self)
cmake.configure()
cmake.build()
def layout(self):
cmake_layout(self)
def test(self):
cmd = os.path.join(self.cpp.build.bindir, "test_package")
self.run(cmd, env="conanrun")
#include <iostream>
#include <TIMIQLib.h>
int main()
{
TIMIQLib_ns::TIMIQLib t = TIMIQLib_ns::TIMIQLib();
float a = 0.;
try { t.get_iValue(a); }
catch (...) { }
std::cout << a << '\n';
return 0;
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment