1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74
|
cmake_minimum_required( VERSION 3.17 )
project( {{ name }}
LANGUAGES CXX )
if( NOT WIN32 )
enable_language( C )
endif()
list( APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR} )
find_package (Python REQUIRED COMPONENTS Interpreter Development)
message( STATUS "Python lib: ${Python_LIBRARIES}" )
SET(PYTHON_SP_DIR "lib/python3/dist-packages" CACHE PATH "Python site-packages directory (for installing)")
find_package( pybind11 REQUIRED )
find_package( VTK REQUIRED
COMPONENTS
WrappingPythonCore
RenderingCore
RenderingOpenGL2
CommonDataModel
CommonExecutionModel
freetype
)
message(STATUS "VTK ${VTK_VERSION} found")
find_package( OpenCASCADE REQUIRED )
include_directories( ${PROJECT_SOURCE_DIR} )
file( GLOB CPP_FILES ${PROJECT_SOURCE_DIR}/*.cpp )
add_library( {{ name }} MODULE ${CPP_FILES} )
target_include_directories( {{ name }} PRIVATE ${OpenCASCADE_INCLUDE_DIR} )
target_link_libraries( {{ name }} PRIVATE ${OpenCASCADE_LIBRARIES} )
target_link_libraries( {{ name }} PRIVATE pybind11::pybind11 VTK::WrappingPythonCore VTK::RenderingCore VTK::CommonDataModel VTK::CommonExecutionModel)
set_target_properties( {{ name }}
PROPERTIES
CXX_STANDARD 17
INTERPROCEDURAL_OPTIMIZATION FALSE
PREFIX "${PYTHON_MODULE_PREFIX}"
SUFFIX "${PYTHON_MODULE_EXTENSION}" )
if(WIN32)
target_compile_options( {{ name }} PRIVATE /bigobj )
target_compile_definitions( {{ name }} PRIVATE
"Standard_EXPORT="
"Standard_EXPORTEXTERN="
"Standard_EXPORTEXTERNC=extern \"C\""
"Standard_IMPORT=extern"
"Standard_IMPORTC=extern \"C\""
"_SILENCE_CXX17_ITERATOR_BASE_CLASS_DEPRECATION_WARNING")
target_link_libraries( {{ name }} PRIVATE opengl32 )
target_link_libraries( {{ name }} PRIVATE ${Python_LIBRARIES} )
else()
set_target_properties( {{ name }}
PROPERTIES
CMAKE_CXX_FLAGS_RELEASE "-O3 "
COMPILE_FLAGS "-fpermissive -fvisibility=hidden -fvisibility-inlines-hidden" )
endif()
if(UNIX AND NOT APPLE)
target_link_options( {{ name }} PRIVATE "LINKER:--allow-multiple-definition")
endif()
if(APPLE)
target_link_libraries( {{ name }} PRIVATE "-undefined dynamic_lookup")
endif()
install( TARGETS {{ name }} LIBRARY DESTINATION ${PYTHON_SP_DIR} )
|