Files
2018-04-04 12:28:46 +02:00

188 lines
10 KiB
Python

import os
from conans import ConanFile, CMake,tools
class VTKConan(ConanFile):
name = "VTK"
generators = "cmake"
settings = "os", "compiler", "build_type", "arch"
options = {"shared": [True, False], "with_qt":[True,False] }
default_options = "shared=True","with_qt=False"
url="http://github.com/av3m/conan-vtk.git"
license="http://www.vtk.org/licensing/"
short_paths=True
def configure(self):
if self.options.with_qt == True:
self.requires("Qt/[>=5.0.0]@%s/%s" %(self.user,self.channel))
def system_requirements(self):
installer= tools.SystemPackageTool(self)
if tools.os_info.is_linux and tools.os_info.linux_distro in [ "ubuntu" , "debian" ]:
installer.install("freeglut3-dev")
installer.install("mesa-common-dev")
installer.install("mesa-utils-extra")
installer.install("libgl1-mesa-dev")
installer.install("libglapi-mesa")
def remove_qt_absolute_paths(self):
qt_lib_path = os.path.join(self.deps_cpp_info["Qt"].rootpath,"lib")
qt_lib_path = qt_lib_path.replace("\\","/") + "/"
tools.replace_in_file("_install/lib/cmake/vtk-7.1/VTKTargets.cmake",qt_lib_path,"")
def source(self):
self.run("git clone --branch v%s --single-branch https://gitlab.kitware.com/vtk/vtk.git vtk" %(self.version) )
tools.replace_in_file("vtk/CMakeLists.txt","""project(VTK)""","""project(VTK)
include(${CMAKE_BINARY_DIR}/conanbuildinfo.cmake)
conan_basic_setup()""")
def build(self):
cmake = CMake(self,parallel=True)
cmake.definitions["BUILD_TESTING"] = "OFF"
cmake.definitions["BUILD_EXAMPLES"] = "OFF"
cmake.definitions["CMAKE_INSTALL_PREFIX"] = "_install"
if self.options.shared == False:
cmake.definitions["BUILD_SHARED_LIBS"] = "OFF"
else:
cmake.definitions["BUILD_SHARED_LIBS"] = "ON"
if self.options.with_qt == True:
cmake.definitions["VTK_Group_Qt:BOOL"] = "ON"
cmake.definitions["VTK_BUILD_QT_DESIGNER_PLUGIN:BOOL"] = "ON"
if self.settings.build_type == "Debug" and self.settings.compiler == "Visual Studio":
cmake.definitions["CMAKE_DEBUG_POSTFIX"] = "_d"
cmake.configure(source_dir="vtk", build_dir=".")
cmake.build()
cmake.install()
#if self.options.with_qt == True:
# self.remove_qt_absolute_paths()
def package(self):
self.copy("*", dst=".", src="_install")
def package_info(self):
self.short_version = ".".join(str(self.version).split(".")[0:2])
LIB_POSTFIX = ""
if self.settings.build_type == "Debug" and self.settings.compiler == "Visual Studio":
LIB_POSTFIX = "_d"
libs = [
"vtkalglib-%s" % self.short_version + LIB_POSTFIX,
"vtkChartsCore-%s" % self.short_version + LIB_POSTFIX,
"vtkCommonColor-%s" % self.short_version + LIB_POSTFIX,
"vtkCommonComputationalGeometry-%s" % self.short_version + LIB_POSTFIX,
"vtkCommonCore-%s" % self.short_version + LIB_POSTFIX,
"vtkCommonDataModel-%s" % self.short_version + LIB_POSTFIX,
"vtkCommonExecutionModel-%s" % self.short_version + LIB_POSTFIX,
"vtkCommonMath-%s" % self.short_version + LIB_POSTFIX,
"vtkCommonMisc-%s" % self.short_version + LIB_POSTFIX,
"vtkCommonSystem-%s" % self.short_version + LIB_POSTFIX,
"vtkCommonTransforms-%s" % self.short_version + LIB_POSTFIX,
"vtkDICOMParser-%s" % self.short_version + LIB_POSTFIX,
"vtkDomainsChemistry-%s" % self.short_version + LIB_POSTFIX,
"vtkDomainsChemistryOpenGL2-%s" % self.short_version + LIB_POSTFIX,
"vtkexoIIc-%s" % self.short_version + LIB_POSTFIX,
"vtkexpat-%s" % self.short_version + LIB_POSTFIX,
"vtkFiltersAMR-%s" % self.short_version + LIB_POSTFIX,
"vtkFiltersCore-%s" % self.short_version + LIB_POSTFIX,
"vtkFiltersExtraction-%s" % self.short_version + LIB_POSTFIX,
"vtkFiltersFlowPaths-%s" % self.short_version + LIB_POSTFIX,
"vtkFiltersGeneral-%s" % self.short_version + LIB_POSTFIX,
"vtkFiltersGeneric-%s" % self.short_version + LIB_POSTFIX,
"vtkFiltersGeometry-%s" % self.short_version + LIB_POSTFIX,
"vtkFiltersHybrid-%s" % self.short_version + LIB_POSTFIX,
"vtkFiltersHyperTree-%s" % self.short_version + LIB_POSTFIX,
"vtkFiltersImaging-%s" % self.short_version + LIB_POSTFIX,
"vtkFiltersModeling-%s" % self.short_version + LIB_POSTFIX,
"vtkFiltersParallel-%s" % self.short_version + LIB_POSTFIX,
"vtkFiltersParallelImaging-%s" % self.short_version + LIB_POSTFIX,
"vtkFiltersProgrammable-%s" % self.short_version + LIB_POSTFIX,
"vtkFiltersSelection-%s" % self.short_version + LIB_POSTFIX,
"vtkFiltersSMP-%s" % self.short_version + LIB_POSTFIX,
"vtkFiltersSources-%s" % self.short_version + LIB_POSTFIX,
"vtkFiltersStatistics-%s" % self.short_version + LIB_POSTFIX,
"vtkFiltersTexture-%s" % self.short_version + LIB_POSTFIX,
"vtkFiltersVerdict-%s" % self.short_version + LIB_POSTFIX,
"vtkfreetype-%s" % self.short_version + LIB_POSTFIX,
"vtkGeovisCore-%s" % self.short_version + LIB_POSTFIX,
"vtkglew-%s" % self.short_version + LIB_POSTFIX,
"vtkhdf5_hl-%s" % self.short_version + LIB_POSTFIX,
"vtkhdf5-%s" % self.short_version + LIB_POSTFIX,
"vtkImagingColor-%s" % self.short_version + LIB_POSTFIX,
"vtkImagingCore-%s" % self.short_version + LIB_POSTFIX,
"vtkImagingFourier-%s" % self.short_version + LIB_POSTFIX,
"vtkImagingGeneral-%s" % self.short_version + LIB_POSTFIX,
"vtkImagingHybrid-%s" % self.short_version + LIB_POSTFIX,
"vtkImagingMath-%s" % self.short_version + LIB_POSTFIX,
"vtkImagingMorphological-%s" % self.short_version + LIB_POSTFIX,
"vtkImagingSources-%s" % self.short_version + LIB_POSTFIX,
"vtkImagingStatistics-%s" % self.short_version + LIB_POSTFIX,
"vtkImagingStencil-%s" % self.short_version + LIB_POSTFIX,
"vtkInfovisCore-%s" % self.short_version + LIB_POSTFIX,
"vtkInfovisLayout-%s" % self.short_version + LIB_POSTFIX,
"vtkInteractionImage-%s" % self.short_version + LIB_POSTFIX,
"vtkInteractionStyle-%s" % self.short_version + LIB_POSTFIX,
"vtkInteractionWidgets-%s" % self.short_version + LIB_POSTFIX,
"vtkIOAMR-%s" % self.short_version + LIB_POSTFIX,
"vtkIOCore-%s" % self.short_version + LIB_POSTFIX,
"vtkIOEnSight-%s" % self.short_version + LIB_POSTFIX,
"vtkIOExodus-%s" % self.short_version + LIB_POSTFIX,
"vtkIOExport-%s" % self.short_version + LIB_POSTFIX,
"vtkIOGeometry-%s" % self.short_version + LIB_POSTFIX,
"vtkIOImage-%s" % self.short_version + LIB_POSTFIX,
"vtkIOImport-%s" % self.short_version + LIB_POSTFIX,
"vtkIOInfovis-%s" % self.short_version + LIB_POSTFIX,
"vtkIOLegacy-%s" % self.short_version + LIB_POSTFIX,
"vtkIOLSDyna-%s" % self.short_version + LIB_POSTFIX,
"vtkIOMINC-%s" % self.short_version + LIB_POSTFIX,
"vtkIOMovie-%s" % self.short_version + LIB_POSTFIX,
"vtkIONetCDF-%s" % self.short_version + LIB_POSTFIX,
"vtkIOParallel-%s" % self.short_version + LIB_POSTFIX,
"vtkIOParallelXML-%s" % self.short_version + LIB_POSTFIX,
"vtkIOPLY-%s" % self.short_version + LIB_POSTFIX,
"vtkIOSQL-%s" % self.short_version + LIB_POSTFIX,
"vtkIOVideo-%s" % self.short_version + LIB_POSTFIX,
"vtkIOXML-%s" % self.short_version + LIB_POSTFIX,
"vtkIOXMLParser-%s" % self.short_version + LIB_POSTFIX,
"vtkjpeg-%s" % self.short_version + LIB_POSTFIX,
"vtkjsoncpp-%s" % self.short_version + LIB_POSTFIX,
"vtklibxml2-%s" % self.short_version + LIB_POSTFIX,
"vtkmetaio-%s" % self.short_version + LIB_POSTFIX,
"vtkNetCDF_cxx-%s" % self.short_version + LIB_POSTFIX,
"vtkNetCDF-%s" % self.short_version + LIB_POSTFIX,
"vtkoggtheora-%s" % self.short_version + LIB_POSTFIX,
"vtkParallelCore-%s" % self.short_version + LIB_POSTFIX,
"vtkpng-%s" % self.short_version + LIB_POSTFIX,
"vtkproj4-%s" % self.short_version + LIB_POSTFIX,
"vtkRenderingAnnotation-%s" % self.short_version + LIB_POSTFIX,
"vtkRenderingContext2D-%s" % self.short_version + LIB_POSTFIX,
"vtkRenderingContextOpenGL2-%s" % self.short_version + LIB_POSTFIX,
"vtkRenderingCore-%s" % self.short_version + LIB_POSTFIX,
"vtkRenderingFreeType-%s" % self.short_version + LIB_POSTFIX,
"vtkRenderingImage-%s" % self.short_version + LIB_POSTFIX,
"vtkRenderingLabel-%s" % self.short_version + LIB_POSTFIX,
"vtkRenderingLOD-%s" % self.short_version + LIB_POSTFIX,
"vtkRenderingOpenGL2-%s" % self.short_version + LIB_POSTFIX,
"vtkRenderingVolume-%s" % self.short_version + LIB_POSTFIX,
"vtkRenderingVolumeOpenGL2-%s" % self.short_version + LIB_POSTFIX,
"vtksqlite-%s" % self.short_version + LIB_POSTFIX,
"vtksys-%s" % self.short_version + LIB_POSTFIX,
"vtktiff-%s" % self.short_version + LIB_POSTFIX,
"vtkverdict-%s" % self.short_version + LIB_POSTFIX,
"vtkViewsContext2D-%s" % self.short_version + LIB_POSTFIX,
"vtkViewsCore-%s" % self.short_version + LIB_POSTFIX,
"vtkViewsInfovis-%s" % self.short_version + LIB_POSTFIX,
"vtkzlib-%s" % self.short_version + LIB_POSTFIX
]
if self.options.with_qt:
libs.append("vtkGUISupportQt-%s" % self.short_version + LIB_POSTFIX)
libs.append("vtkGUISupportQtSQL-%s" % self.short_version + LIB_POSTFIX)
self.cpp_info.libs = libs
self.cpp_info.includedirs = [
"include/vtk-%s" % self.short_version,
"include/vtk-%s/vtknetcdf/include" % self.short_version,
]