1
- from conans import ConanFile , CMake , tools
1
+ from conan import ConanFile
2
+ from conan .tools .files import get , copy , replace_in_file
3
+ from conan .tools .cmake import CMake , CMakeToolchain , cmake_layout
4
+
2
5
import os
3
6
4
- required_conan_version = ">=1.43 .0"
7
+ required_conan_version = ">=1.52 .0"
5
8
6
9
class PlutoVGConan (ConanFile ):
7
10
name = "plutovg"
@@ -21,52 +24,53 @@ class PlutoVGConan(ConanFile):
21
24
"fPIC" : True ,
22
25
}
23
26
24
- exports_sources = ["CMakeLists.txt" ]
25
- generators = "cmake"
26
- _cmake = None
27
-
28
- @property
29
- def _source_subfolder (self ):
30
- return "source_subfolder"
31
-
32
27
def config_options (self ):
33
28
if self .settings .os == "Windows" :
34
29
del self .options .fPIC
35
30
36
31
def configure (self ):
37
32
if self .options .shared :
38
- del self .options .fPIC
39
- del self .settings .compiler .libcxx
40
- del self .settings .compiler .cppstd
33
+ try :
34
+ del self .options .fPIC
35
+ except Exception :
36
+ pass
37
+ try :
38
+ del self .settings .compiler .libcxx
39
+ except Exception :
40
+ pass
41
+ try :
42
+ del self .settings .compiler .cppstd
43
+ except Exception :
44
+ pass
45
+
46
+ def layout (self ):
47
+ cmake_layout (self , src_folder = "src" )
41
48
42
49
def source (self ):
43
- tools .get (** self .conan_data ["sources" ][self .version ],
44
- destination = self ._source_subfolder , strip_root = True )
50
+ get (self , ** self .conan_data ["sources" ][self .version ], destination = self .source_folder , strip_root = True )
45
51
46
- def _configure_cmake (self ):
47
- if self ._cmake :
48
- return self ._cmake
49
- self ._cmake = CMake (self )
50
- self ._cmake .configure ()
51
- return self ._cmake
52
+ def generate (self ):
53
+ tc = CMakeToolchain (self )
54
+ tc .variables ["CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS" ] = True
55
+ tc .generate ()
52
56
53
57
def build (self ):
54
- tools . replace_in_file (os .path .join (self ._source_subfolder , "CMakeLists.txt" ),
58
+ replace_in_file (self , os .path .join (self .source_folder , "CMakeLists.txt" ),
55
59
"add_library(plutovg STATIC)" , "add_library(plutovg)" )
56
- tools . replace_in_file (os .path .join (self ._source_subfolder , "CMakeLists.txt" ),
60
+ replace_in_file (self , os .path .join (self .source_folder , "CMakeLists.txt" ),
57
61
"add_subdirectory(example)" , "" )
58
-
59
- cmake = self . _configure_cmake ()
62
+ cmake = CMake ( self )
63
+ cmake . configure ()
60
64
cmake .build ()
61
65
62
66
def package (self ):
63
- self . copy (pattern = "LICENSE" , dst = "licenses" , src = self ._source_subfolder )
64
- self . copy (pattern = "*.h" , dst = "include" , src = os .path .join (self ._source_subfolder , "include" ))
65
- self . copy (pattern = "*.a" , dst = "lib" , src = "lib" , keep_path = False )
66
- self . copy (pattern = "*.so" , dst = "lib" , src = "lib" , keep_path = False )
67
- self . copy (pattern = "*.lib" , dst = "lib" , src = "lib" , keep_path = False )
68
- self . copy (pattern = "*.dll" , dst = "bin" , src = "bin" , keep_path = False )
69
- self . copy (pattern = "*.dylib" , dst = "lib" , src = "lib" , keep_path = False )
67
+ copy (self , pattern = "LICENSE" , dst = os . path . join ( self . package_folder , "licenses" ) , src = self .source_folder )
68
+ copy (self , pattern = "*.h" , dst = os . path . join ( self . package_folder , "include" ) , src = os .path .join (self .source_folder , "include" ))
69
+ copy (self , pattern = "*.a" , dst = os . path . join ( self . package_folder , "lib" ) , src = self . build_folder , keep_path = False )
70
+ copy (self , pattern = "*.so" , dst = os . path . join ( self . package_folder , "lib" ) , src = self . build_folder , keep_path = False )
71
+ copy (self , pattern = "*.lib" , dst = os . path . join ( self . package_folder , "lib" ) , src = self . build_folder , keep_path = False )
72
+ copy (self , pattern = "*.dll" , dst = os . path . join ( self . package_folder , "bin" ) , src = self . build_folder , keep_path = False )
73
+ copy (self , pattern = "*.dylib" , dst = os . path . join ( self . package_folder , "lib" ) , src = self . build_folder , keep_path = False )
70
74
71
75
def package_info (self ):
72
76
self .cpp_info .libs = ["plutovg" ]
0 commit comments