diff --git a/CMakeLists.txt b/CMakeLists.txt index c1e127469..6e80a8612 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -15,9 +15,84 @@ ##You should have received a copy of the GNU Lesser General Public License ##along with pythonOCC. If not, see . -cmake_minimum_required(VERSION 3.18) +# 基本設定(ファイル先頭付近) +cmake_minimum_required(VERSION 3.16) +project(pythonocc-core) + +# OpenCASCADEの基本パス設定 +set(OCCT_ROOT "C:/OpenCASCADE-7.9.0" CACHE PATH "OpenCASCADE root directory") +get_filename_component(OCCT_ROOT "${OCCT_ROOT}" ABSOLUTE) +set(OpenCASCADE_DIR "${OCCT_ROOT}/occt-vc144-64/cmake" CACHE PATH "OpenCASCADE CMake directory") + +# サードパーティライブラリのパス +set(THIRD_PARTY_DIR "${OCCT_ROOT}/3rdparty-vc14-64" CACHE PATH "Third party libraries directory") + +# Visual Studio設定 +if(MSVC) + # プロジェクト設定 + set(CMAKE_VS_PLATFORM_TOOLSET_HOST_ARCHITECTURE "x64") + + # スタートアッププロジェクトの設定 + add_library(pythonocc-core INTERFACE) + set_property(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} + PROPERTY VS_STARTUP_PROJECT "Tesselator") + + # リンカー設定 + set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS}") + set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS}") +endif() -project(PYTHONOCC) +# ライブラリパスの設定と修正関数 +function(setup_opencascade_paths) + # ライブラリディレクトリの設定 + set(_lib_dirs + "${THIRD_PARTY_DIR}/jemalloc-vc14-64/lib" + "${THIRD_PARTY_DIR}/draco-vc14-64/lib" + "${THIRD_PARTY_DIR}/tbb-2021.13.0-x64/lib" + ) + + foreach(_dir ${_lib_dirs}) + if(EXISTS "${_dir}") + # パスを追加 + list(APPEND CMAKE_PREFIX_PATH "${_dir}") + list(APPEND CMAKE_LIBRARY_PATH "${_dir}") + + if(MSVC) + # MSVCのリンカーフラグを設定 + set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /LIBPATH:\"${_dir}\"" PARENT_SCOPE) + set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /LIBPATH:\"${_dir}\"" PARENT_SCOPE) + endif() + endif() + endforeach() + + # 親スコープに変数を伝播 + set(CMAKE_PREFIX_PATH "${CMAKE_PREFIX_PATH}" PARENT_SCOPE) + set(CMAKE_LIBRARY_PATH "${CMAKE_LIBRARY_PATH}" PARENT_SCOPE) +endfunction() + +# OpenCASCADEのパス修正関数 +function(fix_opencascade_paths) + foreach(_lib ${OpenCASCADE_LIBRARIES}) + if(TARGET ${_lib}) + get_target_property(_loc ${_lib} IMPORTED_LOCATION) + if(_loc) + string(REPLACE "C:/work/occt" "${OCCT_ROOT}" _fixed_loc "${_loc}") + set_target_properties(${_lib} PROPERTIES + IMPORTED_LOCATION "${_fixed_loc}" + IMPORTED_LOCATION_RELEASE "${_fixed_loc}" + IMPORTED_LOCATION_DEBUG "${_fixed_loc}") + endif() + endif() + endforeach() +endfunction() + +# パス設定を適用 +find_package(OpenCASCADE REQUIRED) +if(OpenCASCADE_FOUND) + message(STATUS "OpenCASCADE version found: ${OpenCASCADE_VERSION}") + setup_opencascade_paths() + fix_opencascade_paths() +endif() # set pythonOCC version set(PYTHONOCC_VERSION_MAJOR 7) @@ -110,7 +185,12 @@ message(STATUS "Python library release: ${Python3_LIBRARY_RELEASE}") ######## # SWIG # ######## -find_package(SWIG 4.2.1...4.3.0 REQUIRED) +find_package(SWIG REQUIRED) +if(${SWIG_VERSION} VERSION_GREATER_EQUAL "4.3.1") + message(STATUS "Using SWIG version ${SWIG_VERSION}") +else() + message(FATAL_ERROR "SWIG version ${SWIG_VERSION} is too old. Need 4.3.1 or higher") +endif() message(STATUS "SWIG version found: ${SWIG_VERSION}") include(${SWIG_USE_FILE}) set(SWIG_FILES_PATH src/SWIG_files/wrapper) @@ -184,6 +264,71 @@ if(NOT OCCT_GP_PNT_HEADER_LOCATION) message(FATAL_ERROR "gp_Pnt.hxx can not be found.") endif() +# パスのリマップを実行 +fix_opencascade_paths() + +# ライブラリの検索パス設定 +set(CMAKE_LIBRARY_PATH + "${OCCT_ROOT}/occt-vc144-64/lib" + "${THIRD_PARTY_DIR}/jemalloc-vc14-64/lib" + "${THIRD_PARTY_DIR}/draco-vc14-64/lib" + "${THIRD_PARTY_DIR}/tbb-2021.13.0-x64/lib" + ${CMAKE_LIBRARY_PATH} +) + +# ライブラリパスの修正を実行 +setup_opencascade_paths() + +# リンカー設定を修正 +if(MSVC) + # プロジェクトの基本設定 + set(CMAKE_VS_PLATFORM_TOOLSET_HOST_ARCHITECTURE "x64") + + # VC++のディレクトリ設定を修正 + set_property(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT ${PROJECT_NAME}) + + # リンカーの追加のライブラリディレクトリを設定 + set(_lib_dirs + "${THIRD_PARTY_DIR}/jemalloc-vc14-64/lib" + "${THIRD_PARTY_DIR}/draco-vc14-64/lib" + "${THIRD_PARTY_DIR}/tbb-2021.13.0-x64/lib" + ) + + # リンカーフラグを設定 + foreach(_dir ${_lib_dirs}) + set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /LIBPATH:\"${_dir}\"") + set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /LIBPATH:\"${_dir}\"") + endforeach() + + # プロジェクトごとのリンカー設定を追加 + function(set_project_lib_dirs target) + get_target_property(_type ${target} TYPE) + if(_type STREQUAL "SHARED_LIBRARY" OR _type STREQUAL "EXECUTABLE") + foreach(_dir ${_lib_dirs}) + target_link_directories(${target} PRIVATE ${_dir}) + endforeach() + endif() + endfunction() + + # swig_add_library呼び出し後に適用するフック + macro(post_swig_target_setup target) + set_project_lib_dirs(${target}) + endmacro() +endif() + +# サードパーティライブラリのパス設定(修正版) +set(THIRD_PARTY_LIBS + "${THIRD_PARTY_DIR}/jemalloc-vc14-64/lib" + "${THIRD_PARTY_DIR}/draco-vc14-64/lib" + "${THIRD_PARTY_DIR}/tbb-2021.13.0-x64/lib" +) + +# リンクディレクトリの設定を修正 +link_directories( + "${OCCT_ROOT}/occt-vc144-64/lib" + ${THIRD_PARTY_LIBS} +) + ############################################## # Installation directory # # by default, installed to site-packages/OCC # @@ -288,11 +433,27 @@ set(CMAKE_SWIG_OUTDIR ${LIBRARY_OUTPUT_PATH}) # MODEL Toolkits # ################## file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/${SWIG_FILES_PATH}) +set(CMAKE_SWIG_FLAGS ${CMAKE_SWIG_FLAGS} "-I${THIRD_PARTY_DIR}/include") +set(OCCT_TOOLKIT_MODEL + FSD + Message + NCollection + OSD + Plugin + Quantity + Resource + Standard + StdFail + Storage + TColStd # ← ここにTColStdが含まれているか確認 + # ...他のモジュール... +) foreach(OCCT_MODULE ${OCCT_TOOLKIT_MODEL}) set(FILE ${SWIG_FILES_PATH}/${OCCT_MODULE}.i) set_source_files_properties(${FILE} PROPERTIES CPLUSPLUS ON) swig_add_library (${OCCT_MODULE} LANGUAGE python SOURCES ${FILE} TYPE MODULE) swig_link_libraries(${OCCT_MODULE} ${OCCT_MODEL_LIBRARIES} Python3::Module) + post_swig_target_setup(${OCCT_MODULE}) endforeach(OCCT_MODULE) ############### @@ -307,6 +468,7 @@ set(TESSELATOR_SOURCE_FILES swig_add_library(Tesselator LANGUAGE python SOURCES ${TESSELATOR_SOURCE_FILES} TYPE MODULE) swig_link_libraries(Tesselator ${OCCT_MODEL_LIBRARIES} Python3::Module) +post_swig_target_setup(Tesselator) ################# # Visualisation # @@ -323,6 +485,7 @@ if(PYTHONOCC_WRAP_VISU) set_source_files_properties(${FILE} PROPERTIES CPLUSPLUS ON) swig_add_library (${OCCT_MODULE} LANGUAGE python SOURCES ${FILE} TYPE MODULE) swig_link_libraries(${OCCT_MODULE} ${OCCT_MODEL_LIBRARIES} ${OCCT_VISUALIZATION_LIBRARIES} Python3::Module) + post_swig_target_setup(${OCCT_MODULE}) endforeach(OCCT_MODULE) # Build third part modules @@ -336,6 +499,7 @@ if(PYTHONOCC_WRAP_VISU) swig_add_library(Visualization LANGUAGE python SOURCES ${VISUALIZATION_SOURCE_FILES} TYPE MODULE) swig_link_libraries(Visualization ${OCCT_MODEL_LIBRARIES} ${OCCT_VISUALIZATION_LIBRARIES} Python3::Module) + post_swig_target_setup(Visualization) if(APPLE) # on OSX, always add /System/Library/Frameworks/Cocoa.framework, even @@ -356,6 +520,7 @@ if(PYTHONOCC_WRAP_VISU) swig_add_library(MeshDS LANGUAGE python SOURCES ${MESHDATASOURCE_SOURCE_FILES} TYPE MODULE) swig_link_libraries(MeshDS ${OCCT_MODEL_LIBRARIES} ${OCCT_VISUALIZATION_LIBRARIES} Python3::Module) + post_swig_target_setup(MeshDS) endif(PYTHONOCC_WRAP_VISU) @@ -368,6 +533,7 @@ if(PYTHONOCC_WRAP_DATAEXCHANGE) set_source_files_properties(${FILE} PROPERTIES CPLUSPLUS ON) swig_add_library(${OCCT_MODULE} LANGUAGE python SOURCES ${FILE} TYPE MODULE) swig_link_libraries(${OCCT_MODULE} ${OCCT_MODEL_LIBRARIES} ${OCCT_DATAEXCHANGE_LIBRARIES} Python3::Module) + post_swig_target_setup(${OCCT_MODULE}) endforeach(OCCT_MODULE) endif(PYTHONOCC_WRAP_DATAEXCHANGE) @@ -380,6 +546,7 @@ if(PYTHONOCC_WRAP_OCAF) set_source_files_properties(${FILE} PROPERTIES CPLUSPLUS ON) swig_add_library(${OCCT_MODULE} LANGUAGE python SOURCES ${FILE} TYPE MODULE) swig_link_libraries(${OCCT_MODULE} ${OCCT_MODEL_LIBRARIES} ${OCCT_OCAF_LIBRARIES} Python3::Module) + post_swig_target_setup(${OCCT_MODULE}) endforeach(OCCT_MODULE) endif(PYTHONOCC_WRAP_OCAF) @@ -399,6 +566,7 @@ ${CMAKE_CURRENT_SOURCE_DIR}/src/Addons/Font3d.cpp swig_add_library(Addons LANGUAGE python SOURCES ${ADDONS_SOURCE_FILES} TYPE MODULE) swig_link_libraries(Addons ${OCCT_MODEL_LIBRARIES} ${OCCT_VISUALIZATION_LIBRARIES} Python3::Module) +post_swig_target_setup(Addons) ################ # Installation # diff --git a/CMakeLists_3rd_party.txt b/CMakeLists_3rd_party.txt new file mode 100644 index 000000000..fdaf3e4f2 --- /dev/null +++ b/CMakeLists_3rd_party.txt @@ -0,0 +1,670 @@ +##Copyright (c) 2011-2025 Thomas Paviot (tpaviot@gmail.com) +## +##This file is part of pythonOCC. +## +##pythonOCC is free software: you can redistribute it and/or modify +##it under the terms of the GNU Lesser General Public License as published by +##the Free Software Foundation, either version 3 of the License, or +##(at your option) any later version. +## +##pythonOCC is distributed in the hope that it will be useful, +##but WITHOUT ANY WARRANTY; without even the implied warranty of +##MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +##GNU Lesser General Public License for more details. +## +##You should have received a copy of the GNU Lesser General Public License +##along with pythonOCC. If not, see . + +# 基本設定(ファイル先頭付近) +cmake_minimum_required(VERSION 3.16) +project(pythonocc-core) + +# OpenCASCADEの基本パス設定 +set(OCCT_ROOT "C:/OpenCASCADE-7.9.0" CACHE PATH "OpenCASCADE root directory") +get_filename_component(OCCT_ROOT "${OCCT_ROOT}" ABSOLUTE) + +# サードパーティライブラリのパス +set(THIRD_PARTY_DIR "${OCCT_ROOT}/3rdparty-vc14-64" CACHE PATH "Third party libraries directory") + +# Visual Studio設定 +if(MSVC) + # プロジェクト設定 + set(CMAKE_VS_PLATFORM_TOOLSET_HOST_ARCHITECTURE "x64") + + # サードパーティライブラリのパスを確認 + set(_lib_paths + "${THIRD_PARTY_DIR}/jemalloc-vc14-64/lib/jemalloc.lib" + "${THIRD_PARTY_DIR}/draco-vc14-64/lib/draco.lib" + "${THIRD_PARTY_DIR}/tbb-2021.13.0-x64/lib/tbb12.lib" + ) + + # 存在するライブラリのみリンク + foreach(_lib ${_lib_paths}) + if(EXISTS "${_lib}") + message(STATUS "Found library: ${_lib}") + list(APPEND ADDITIONAL_LIBS "${_lib}") + else() + message(WARNING "Library not found: ${_lib}") + endif() + endforeach() + + # リンカー設定の関数 + function(setup_target_libs target) + if(TARGET ${target}) + # リンカーフラグを設定 + foreach(_lib ${ADDITIONAL_LIBS}) + target_link_libraries(${target} PRIVATE "${_lib}") + endforeach() + + # インクルードパスを設定 + target_include_directories(${target} PRIVATE + "${OCCT_ROOT}/occt-vc144-64/inc" + "${THIRD_PARTY_DIR}/include" + ) + endif() + endfunction() + + # swig_add_libraryのフック + macro(post_swig_target_setup target) + setup_target_libs(${target}) + endmacro() +endif() + +# ライブラリパスの設定と修正関数 +function(setup_opencascade_paths) + # ライブラリディレクトリの設定 + set(_lib_dirs + "${THIRD_PARTY_DIR}/jemalloc-vc14-64/lib" + "${THIRD_PARTY_DIR}/draco-vc14-64/lib" + "${THIRD_PARTY_DIR}/tbb-2021.13.0-x64/lib" + ) + + foreach(_dir ${_lib_dirs}) + if(EXISTS "${_dir}") + # パスを追加 + list(APPEND CMAKE_PREFIX_PATH "${_dir}") + list(APPEND CMAKE_LIBRARY_PATH "${_dir}") + + if(MSVC) + # MSVCのリンカーフラグを設定 + set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /LIBPATH:\"${_dir}\"" PARENT_SCOPE) + set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /LIBPATH:\"${_dir}\"" PARENT_SCOPE) + endif() + endif() + endforeach() + + # 親スコープに変数を伝播 + set(CMAKE_PREFIX_PATH "${CMAKE_PREFIX_PATH}" PARENT_SCOPE) + set(CMAKE_LIBRARY_PATH "${CMAKE_LIBRARY_PATH}" PARENT_SCOPE) +endfunction() + +# OpenCASCADEのパス修正関数 +function(fix_opencascade_paths) + foreach(_lib ${OpenCASCADE_LIBRARIES}) + if(TARGET ${_lib}) + get_target_property(_loc ${_lib} IMPORTED_LOCATION) + if(_loc) + string(REPLACE "C:/work/occt" "${OCCT_ROOT}" _fixed_loc "${_loc}") + set_target_properties(${_lib} PROPERTIES + IMPORTED_LOCATION "${_fixed_loc}" + IMPORTED_LOCATION_RELEASE "${_fixed_loc}" + IMPORTED_LOCATION_DEBUG "${_fixed_loc}") + endif() + endif() + endforeach() +endfunction() + +# パス設定を適用 +find_package(OpenCASCADE REQUIRED) +if(OpenCASCADE_FOUND) + message(STATUS "OpenCASCADE version found: ${OpenCASCADE_VERSION}") + setup_opencascade_paths() + fix_opencascade_paths() +endif() + +# set pythonOCC version +set(PYTHONOCC_VERSION_MAJOR 7) +set(PYTHONOCC_VERSION_MINOR 9) +set(PYTHONOCC_VERSION_PATCH 0) + +# Empty for official releases, set to -dev, -rc1, etc for development releases +set(PYTHONOCC_VERSION_DEVEL) + +# set OCCT version +set(OCCT_VERSION_MAJOR 7) +set(OCCT_VERSION_MINOR 9) +set(OCCT_VERSION_PATCH 0) + +set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake ${CMAKE_MODULE_PATH}) + +## cmake policies +# CMP0078: UseSWIG generates standard target names. +if (POLICY CMP0078) + cmake_policy(SET CMP0078 NEW) +endif(POLICY CMP0078) + +# CMP0086: UseSWIG honors SWIG_MODULE_NAME via -module +if (POLICY CMP0086) + cmake_policy(SET CMP0086 NEW) +endif(POLICY CMP0086) + +# Force C++ 11 +set(CMAKE_CXX_STANDARD 11) +set(CMAKE_CXX_STANDARD_REQUIRED ON) + +set(BUILD_SHARED_LIBS ON) +include_directories(${CMAKE_CURRENT_SOURCE_DIR}) + +if(APPLE) + set(CMAKE_MACOSX_RPATH ON) + set(CMAKE_SKIP_BUILD_RPATH FALSE) + set(CMAKE_BUILD_WITH_INSTALL_RPATH FALSE) + set(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib;@loader_path/../../../") + set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE) +endif(APPLE) + +############################# +# Option_With_Default macro # +############################# +macro(option_with_default OPTION_NAME OPTION_STRING OPTION_DEFAULT) + option(${OPTION_NAME} ${OPTION_STRING} ${OPTION_DEFAULT}) +endmacro(option_with_default OPTION_NAME OPTION_STRING OPTION_DEFAULT) + +##################################################################### +# OpenGL. If available, enable compilation for Visualization module # +##################################################################### +find_package(OpenGL) +include_directories(OPENGL_INCLUDE_DIR) + +################# +# Build options # +################# +include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/OCCT_Modules.cmake) +# add an option to choose toolkits to compile +if(OPENGL_FOUND) + option_with_default(PYTHONOCC_WRAP_VISU "Compile Visualisation" ON) +else(OPENGL_FOUND) + message(WARNING "OpenGL library not found, Visualization compilation is turned OFF") + set(PYTHONOCC_WRAP_VISU "Compile Visualisation" OFF) +endif(OPENGL_FOUND) +option_with_default(PYTHONOCC_WRAP_DATAEXCHANGE "Compile DataExchange wrapper" ON) +option_with_default(PYTHONOCC_WRAP_OCAF "Compile OCCT Application Framework wrapper" ON) +option_with_default(SWIG_HIDE_WARNINGS "Check this option if you want a less verbose swig output." ON) +option_with_default(OCCT_HIDE_DEPRECATED "Check this option to disable deprecation warnings for OCCT." ON) +option_with_default(PYTHONOCC_MESHDS_NUMPY "Enable using numpy to speed up mesh data source arrays (requires numpy dev libraries and headers)." OFF) + +############ +# Python 3 # +############ +set(Python3_FIND_STRATEGY LOCATION) +set(Python3_FIND_FRAMEWORK NEVER) +if(PYTHONOCC_MESHDS_NUMPY) + find_package(Python3 3.9 COMPONENTS Interpreter Development NumPy REQUIRED) + include_directories(${Python3_NumPy_INCLUDE_DIRS}) + message(STATUS "Numpy include directory: ${Python3_NumPy_INCLUDE_DIRS}") + set(CMAKE_SWIG_FLAGS ${CMAKE_SWIG_FLAGS} -DBUILD_MESHDS_NUMPY) +else(PYTHONOCC_MESHDS_NUMPY) + find_package(Python3 COMPONENTS Interpreter Development REQUIRED) +endif(PYTHONOCC_MESHDS_NUMPY) +message(STATUS "Python3 interpreter:" ${Python3_EXECUTABLE}) +message(STATUS "Python include directory: ${Python3_INCLUDE_DIRS}") +message(STATUS "Python library release: ${Python3_LIBRARY_RELEASE}") + +######## +# SWIG # +######## +find_package(SWIG REQUIRED) +if(${SWIG_VERSION} VERSION_GREATER_EQUAL "4.3.1") + message(STATUS "Using SWIG version ${SWIG_VERSION}") +else() + message(FATAL_ERROR "SWIG version ${SWIG_VERSION} is too old. Need 4.3.1 or higher") +endif() +message(STATUS "SWIG version found: ${SWIG_VERSION}") +include(${SWIG_USE_FILE}) +set(SWIG_FILES_PATH src/SWIG_files/wrapper) +set(CMAKE_SWIG_FLAGS ${CMAKE_SWIG_FLAGS} -fvirtual) +if(SWIG_HIDE_WARNINGS) + message(STATUS "Disabled SWIG warnings") + set(CMAKE_SWIG_FLAGS ${CMAKE_SWIG_FLAGS} -w302,401,402,412,314,509,512,504,325,503,520,350,351,383,389,394,395,404) +endif() + +if(CMAKE_BUILD_TYPE STREQUAL "Release") + add_definitions(-DSWIG_PYTHON_SILENT_MEMLEAK) +endif(CMAKE_BUILD_TYPE STREQUAL "Release") + +######################### +# On Windows, see #1347 # +######################### +if(WIN32 AND OCCT_ESSENTIALS_ROOT) + # Générer le fichier config.py.in + file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/config.py.in + "# Configuration file generated by CMake + +OCCT_ESSENTIALS_ROOT = \"@OCCT_ESSENTIALS_ROOT@\" + ") + configure_file( + ${CMAKE_CURRENT_BINARY_DIR}/config.py.in + ${CMAKE_CURRENT_BINARY_DIR}/config.py + @ONLY + ) + set(OCCT_ESSENTIALS_PATH ${OCCT_ESSENTIALS_ROOT}) + install(FILES ${CMAKE_CURRENT_BINARY_DIR}/config.py + DESTINATION ${PYTHONOCC_INSTALL_DIRECTORY} + ) +endif() + +################################ +# OCE include and lib location # +################################ +if(OCCT_HIDE_DEPRECATED) + message(STATUS "Disabled deprecation warnings for OpenCASCADE") + add_definitions(-DOCCT_NO_DEPRECATED) +endif(OCCT_HIDE_DEPRECATED) + +if(DEFINED OCCT_INCLUDE_DIR) + if(NOT DEFINED OCCT_LIBRARY_DIR) + message(FATAL_ERROR "OCCT_LIBRARY_DIR must be defined") + endif(NOT DEFINED OCCT_LIBRARY_DIR) + set(OCCT_INCLUDE_DIR ${OCCT_INCLUDE_DIR} CACHE PATH "OCCT include path") + set(OCCT_LIBRARY_DIR ${OCCT_LIBRARY_DIR} CACHE PATH "OCCT library path") + include_directories(${OCCT_INCLUDE_DIR}) + link_directories(${OCCT_LIBRARY_DIR}) +# if OCCT_INCLUDE_DIR is not passed at command line, +# find OCE automatically +else(OCCT_INCLUDE_DIR) + find_package(OpenCASCADE ${OCCT_VERSION_MAJOR}.${OCCT_VERSION_MINOR}.${OCCT_VERSION_PATCH} EXACT REQUIRED) + if(OpenCASCADE_FOUND) + message(STATUS "OpenCASCADE version found: " ${OpenCASCADE_MAJOR_VERSION} "." ${OpenCASCADE_MINOR_VERSION} "." ${OpenCASCADE_MAINTENANCE_VERSION}) + message(STATUS "OpenCASCADE include directory: " ${OpenCASCADE_INCLUDE_DIR}) + message(STATUS "OpenCASCADE binary directory: " ${OpenCASCADE_BINARY_DIR}) + include_directories(${OpenCASCADE_INCLUDE_DIR}) + else(OpenCASCADE_FOUND) # set default paths + set(OCCT_INCLUDE_DIR /usr/local/include/opencascade CACHE PATH "OpenCASCADE include path") + set(OCCT_LIBRARY_DIR /usr/local/lib CACHE PATH "OpenCASCADE lib path") + include_directories(${OCCT_INCLUDE_DIR}) + link_directories(${OCCT_LIBRARY_DIR}) + endif(OpenCASCADE_FOUND) +endif(DEFINED OCCT_INCLUDE_DIR) + +# After the OCC paths are properly set up, +find_file(OCCT_GP_PNT_HEADER_LOCATION "gp_Pnt.hxx" PATHS ${OpenCASCADE_INCLUDE_DIR} ${OCCT_INCLUDE_DIR}) +if(NOT OCCT_GP_PNT_HEADER_LOCATION) + message(FATAL_ERROR "gp_Pnt.hxx can not be found.") +endif() + +# パスのリマップを実行 +fix_opencascade_paths() + +# ライブラリの検索パス設定 +set(CMAKE_LIBRARY_PATH + "${OCCT_ROOT}/occt-vc144-64/lib" + "${THIRD_PARTY_DIR}/jemalloc-vc14-64/lib" + "${THIRD_PARTY_DIR}/draco-vc14-64/lib" + "${THIRD_PARTY_DIR}/tbb-2021.13.0-x64/lib" + ${CMAKE_LIBRARY_PATH} +) + +# ライブラリパスの修正を実行 +setup_opencascade_paths() + +# リンカー設定を修正 +if(MSVC) + # プロジェクトの基本設定 + set(CMAKE_VS_PLATFORM_TOOLSET_HOST_ARCHITECTURE "x64") + + # VC++のディレクトリ設定を修正 + set_property(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT ${PROJECT_NAME}) + + # リンカーの追加のライブラリディレクトリを設定 + set(_lib_dirs + "${THIRD_PARTY_DIR}/jemalloc-vc14-64/lib" + "${THIRD_PARTY_DIR}/draco-vc14-64/lib" + "${THIRD_PARTY_DIR}/tbb-2021.13.0-x64/lib" + ) + + # リンカーフラグを設定 + foreach(_dir ${_lib_dirs}) + set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /LIBPATH:\"${_dir}\"") + set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /LIBPATH:\"${_dir}\"") + endforeach() + + # プロジェクトごとのリンカー設定を追加 + function(set_project_lib_dirs target) + get_target_property(_type ${target} TYPE) + if(_type STREQUAL "SHARED_LIBRARY" OR _type STREQUAL "EXECUTABLE") + foreach(_dir ${_lib_dirs}) + target_link_directories(${target} PRIVATE ${_dir}) + endforeach() + endif() + endfunction() + + # swig_add_library呼び出し後に適用するフック + macro(post_swig_target_setup target) + set_project_lib_dirs(${target}) + endmacro() +endif() + +# サードパーティライブラリのパス設定(修正版) +set(THIRD_PARTY_LIBS + "${THIRD_PARTY_DIR}/jemalloc-vc14-64/lib" + "${THIRD_PARTY_DIR}/draco-vc14-64/lib" + "${THIRD_PARTY_DIR}/tbb-2021.13.0-x64/lib" +) + +# リンクディレクトリの設定を修正 +link_directories( + "${OCCT_ROOT}/occt-vc144-64/lib" + ${THIRD_PARTY_LIBS} +) + +############################################## +# Installation directory # +# by default, installed to site-packages/OCC # +############################################## +if(NOT DEFINED PYTHONOCC_INSTALL_DIRECTORY) + if(DEFINED ENV{SP_DIR} AND WIN32) + # TODO: following hack is azure specific, a recent update in azure + # prevent cmake to find correct paths of python3 on windows + # this should be removed as soon as possible + message(STATUS "conda-build running, using $ENV{SP_DIR} as install dir") + set(PYTHONOCC_INSTALL_DIRECTORY $ENV{SP_DIR}/OCC CACHE PATH "pythonocc install directory") + else(DEFINED ENV{SP_DIR} AND WIN32) + execute_process(COMMAND ${Python3_EXECUTABLE} -c "from distutils.sysconfig import get_python_lib; from os.path import relpath; print(relpath(get_python_lib(1,prefix='${CMAKE_INSTALL_PREFIX}'),'${CMAKE_INSTALL_PREFIX}'))" OUTPUT_VARIABLE python_lib OUTPUT_STRIP_TRAILING_WHITESPACE) + set(PYTHONOCC_INSTALL_DIRECTORY ${python_lib}/OCC CACHE PATH "pythonocc install directory") + endif(DEFINED ENV{SP_DIR} AND WIN32) +endif(NOT DEFINED PYTHONOCC_INSTALL_DIRECTORY) + +message(STATUS "pythonocc modules will be installed to: ${PYTHONOCC_INSTALL_DIRECTORY}") + +############################################# +# List of OCE shared libraries to link with # +############################################# +set(OCCT_MODEL_LIBRARIES TKernel TKMath TKBRep TKG2d TKG3d TKGeomBase TKBO + TKBool TKFeat TKFillet TKGeomAlgo TKHLR TKMesh TKOffset + TKPrim TKShHealing TKTopAlgo TKXMesh) +set(OCCT_VISUALIZATION_LIBRARIES TKService TKV3d TKOpenGl TKMeshVS) +set(OCCT_DATAEXCHANGE_LIBRARIES TKDE TKXSBase TKDESTEP TKDEIGES TKDESTL TKDEVRML TKDECascade TKDEOBJ TKDEGLTF TKDEPLY TKCDF TKLCAF TKXCAF TKVCAF TKXmlXCAF TKBinXCAF TKRWMesh TKService TKV3d) +set(OCCT_OCAF_LIBRARIES TKCDF TKLCAF TKCAF TKBinL TKXmlL TKBin TKXml TKStdL + TKStd TKTObj TKBinTObj TKXmlTObj TKVCAF TKService TKV3d) + +################ +# Headers path # +################ +include_directories(${CMAKE_CURRENT_SOURCE_DIR}/src/SWIG_files/headers) + +###################################################### +# Configure Build settings according to the platform # +###################################################### + +# Mingw64 needs MS_WIN64 to be defined (otherwise link failures) +if(MINGW) + message(STATUS "MinGW:") + if(${CMAKE_SIZEOF_VOID_P} MATCHES "8") # 64 bit check + add_definitions(-DMS_WIN64) + endif(${CMAKE_SIZEOF_VOID_P} MATCHES "8") +endif(MINGW) + +# MACOSX_DEPLOYEMENT_TARGET +# explicit link to libc++ for recent osx versions +if(APPLE) + message(STATUS "Explicitly link to libc++ on modern osx versions") + add_definitions(-stdlib=libc++) +endif(APPLE) + +if(UNIX) + if(APPLE) + ######### MacOSX ########### + set(PLATFORM Darwin) + else(APPLE) + ######### Unix/Linux ########### + set(PLATFORM Unix) + endif(APPLE) + set(CMAKE_SWIG_FLAGS ${CMAKE_SWIG_FLAGS} -DCSFDB -DHAVE_CONFIG_H -DSWIG_PYTHON_SILENT_MEMLEAK) + add_definitions(-DHAVE_CONFIG_H -DCSFDB) +else(UNIX) + if(WIN32) + ######### Windows ########### + add_definitions(-DWNT -DWIN32 -D_WINDOWS -DCSFDB -DHAVE_CONFIG_H) + set(CMAKE_SWIG_FLAGS ${CMAKE_SWIG_FLAGS} -DCSFDB -DWIN32 -D_WINDOWS -DSWIG_PYTHON_SILENT_MEMLEAK) + set(PLATFORM win) + else(WIN32) + message(STATUS "Unknown platform") + endif(WIN32) +endif(UNIX) + +################################################ +# Define output path for generated libraries: # +# platform/compiler-build_type-bits # +# for instance: # +# ./win32/bin/vc7.1-release-64 # +# ./win32/bin/vc9-debug-32 # +# ./Unix/i386-debug-64 # +################################################ +if(WIN32) + if(MSVC) # The compiler used is MSVC + message(STATUS "Found MSVC compiler: ${MSVC} ${MSVC_VERSION}") + set(LIBRARY_OUTPUT_PATH bin/) + # prevent bigobj fatal error C1148 issue, and remove C4244 verbose warning + add_definitions("/bigobj /wd4244 /wd4251 /wd4275 /wd4290") + elseif (BORLAND) # The compiler used is BORLAND + set(LIBRARY_OUTPUT_PATH win${BIT}/bin/${CMAKE_BUILD_TYPE}) + else() + set(LIBRARY_OUTPUT_PATH win${BIT}/bin/${CMAKE_BUILD_TYPE}) + endif() + set(EXECUTABLE_OUTPUT_PATH ${LIBRARY_OUTPUT_PATH}) +else(WIN32) + set(LIBRARY_OUTPUT_PATH ${PLATFORM}/${CMAKE_SYSTEM_PROCESSOR}-${CMAKE_BUILD_TYPE}-${BIT}) +endif(WIN32) +set(CMAKE_SWIG_OUTDIR ${LIBRARY_OUTPUT_PATH}) + +################## +# MODEL Toolkits # +################## +file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/${SWIG_FILES_PATH}) +set(CMAKE_SWIG_FLAGS ${CMAKE_SWIG_FLAGS} "-I${THIRD_PARTY_DIR}/include") +foreach(OCCT_MODULE ${OCCT_TOOLKIT_MODEL}) + set(FILE ${SWIG_FILES_PATH}/${OCCT_MODULE}.i) + set_source_files_properties(${FILE} PROPERTIES CPLUSPLUS ON) + swig_add_library (${OCCT_MODULE} LANGUAGE python SOURCES ${FILE} TYPE MODULE) + swig_link_libraries(${OCCT_MODULE} ${OCCT_MODEL_LIBRARIES} Python3::Module) + post_swig_target_setup(${OCCT_MODULE}) +endforeach(OCCT_MODULE) + +############### +# Tessellator # +############### +execute_process(COMMAND ${CMAKE_COMMAND} -E make_directory src/Tesselator) +set_source_files_properties(${CMAKE_CURRENT_SOURCE_DIR}/src/Tesselator/Tesselator.i PROPERTIES CPLUSPLUS ON) +include_directories(${CMAKE_CURRENT_SOURCE_DIR}/src/Tesselator) +set(TESSELATOR_SOURCE_FILES + ${CMAKE_CURRENT_SOURCE_DIR}/src/Tesselator/Tesselator.i + ${CMAKE_CURRENT_SOURCE_DIR}/src/Tesselator/ShapeTesselator.cpp) + +swig_add_library(Tesselator LANGUAGE python SOURCES ${TESSELATOR_SOURCE_FILES} TYPE MODULE) +swig_link_libraries(Tesselator ${OCCT_MODEL_LIBRARIES} Python3::Module) +post_swig_target_setup(Tesselator) + +################# +# Visualisation # +################# +if(PYTHONOCC_WRAP_VISU) + find_package(OpenGL REQUIRED) + if(OPENGL_FOUND) + message(STATUS "OpenGL found; Visualization support enabled") + endif() + include_directories(OPENGL_INCLUDE_DIR) + + foreach(OCCT_MODULE ${OCCT_TOOLKIT_VISUALIZATION}) + set(FILE ${SWIG_FILES_PATH}/${OCCT_MODULE}.i) + set_source_files_properties(${FILE} PROPERTIES CPLUSPLUS ON) + swig_add_library (${OCCT_MODULE} LANGUAGE python SOURCES ${FILE} TYPE MODULE) + swig_link_libraries(${OCCT_MODULE} ${OCCT_MODEL_LIBRARIES} ${OCCT_VISUALIZATION_LIBRARIES} Python3::Module) + post_swig_target_setup(${OCCT_MODULE}) + endforeach(OCCT_MODULE) + + # Build third part modules + # TODO : the following line is strange but necessary + execute_process(COMMAND ${CMAKE_COMMAND} -E make_directory src/Visualization) + set_source_files_properties(${CMAKE_CURRENT_SOURCE_DIR}/src/Visualization/Visualization.i PROPERTIES CPLUSPLUS ON) + include_directories(${CMAKE_CURRENT_SOURCE_DIR}/src/Visualization) + set(VISUALIZATION_SOURCE_FILES + ${CMAKE_CURRENT_SOURCE_DIR}/src/Visualization/Visualization.i + ${CMAKE_CURRENT_SOURCE_DIR}/src/Visualization/Display3d.cpp) + + swig_add_library(Visualization LANGUAGE python SOURCES ${VISUALIZATION_SOURCE_FILES} TYPE MODULE) + swig_link_libraries(Visualization ${OCCT_MODEL_LIBRARIES} ${OCCT_VISUALIZATION_LIBRARIES} Python3::Module) + post_swig_target_setup(Visualization) + + if(APPLE) + # on OSX, always add /System/Library/Frameworks/Cocoa.framework, even + # if GLX is enabled + swig_link_libraries(Visualization /System/Library/Frameworks/Cocoa.framework) + endif(APPLE) + + ########################## + # MeshDS module addition # + ########################## + execute_process(COMMAND ${CMAKE_COMMAND} -E make_directory src/MeshDataSource) + set(FILE ${SWIG_FILES_PATH}/MeshDS.i) + set_source_files_properties(${FILE} PROPERTIES CPLUSPLUS ON) + include_directories(${CMAKE_CURRENT_SOURCE_DIR}/src/MeshDataSource) + set(MESHDATASOURCE_SOURCE_FILES + ${FILE} + ${CMAKE_CURRENT_SOURCE_DIR}/src/MeshDataSource/MeshDataSource.cpp) + + swig_add_library(MeshDS LANGUAGE python SOURCES ${MESHDATASOURCE_SOURCE_FILES} TYPE MODULE) + swig_link_libraries(MeshDS ${OCCT_MODEL_LIBRARIES} ${OCCT_VISUALIZATION_LIBRARIES} Python3::Module) + post_swig_target_setup(MeshDS) + +endif(PYTHONOCC_WRAP_VISU) + +################ +# DataExchange # +################ +if(PYTHONOCC_WRAP_DATAEXCHANGE) + foreach(OCCT_MODULE ${OCCT_TOOLKIT_DATAEXCHANGE}) + set(FILE ${SWIG_FILES_PATH}/${OCCT_MODULE}.i) + set_source_files_properties(${FILE} PROPERTIES CPLUSPLUS ON) + swig_add_library(${OCCT_MODULE} LANGUAGE python SOURCES ${FILE} TYPE MODULE) + swig_link_libraries(${OCCT_MODULE} ${OCCT_MODEL_LIBRARIES} ${OCCT_DATAEXCHANGE_LIBRARIES} Python3::Module) + post_swig_target_setup(${OCCT_MODULE}) + endforeach(OCCT_MODULE) +endif(PYTHONOCC_WRAP_DATAEXCHANGE) + +######## +# OCAF # +######## +if(PYTHONOCC_WRAP_OCAF) + foreach(OCCT_MODULE ${OCCT_TOOLKIT_OCAF}) + set(FILE ${SWIG_FILES_PATH}/${OCCT_MODULE}.i) + set_source_files_properties(${FILE} PROPERTIES CPLUSPLUS ON) + swig_add_library(${OCCT_MODULE} LANGUAGE python SOURCES ${FILE} TYPE MODULE) + swig_link_libraries(${OCCT_MODULE} ${OCCT_MODEL_LIBRARIES} ${OCCT_OCAF_LIBRARIES} Python3::Module) + post_swig_target_setup(${OCCT_MODULE}) + endforeach(OCCT_MODULE) +endif(PYTHONOCC_WRAP_OCAF) + +########## +# Addons # +########## +execute_process(COMMAND ${CMAKE_COMMAND} -E make_directory src/Addons) +set_source_files_properties(${CMAKE_CURRENT_SOURCE_DIR}/src/Addons/Addons.i PROPERTIES CPLUSPLUS ON) +include_directories(${CMAKE_CURRENT_SOURCE_DIR}/src/Addons) +set(ADDONS_SOURCE_FILES +${CMAKE_CURRENT_SOURCE_DIR}/src/Addons/Addons.i +${CMAKE_CURRENT_SOURCE_DIR}/src/Addons/Font3d.cpp +#${CMAKE_CURRENT_SOURCE_DIR}/src/Addons/TextItem.cpp +#${CMAKE_CURRENT_SOURCE_DIR}/src/Addons/LineItem.cpp +#${CMAKE_CURRENT_SOURCE_DIR}/src/Addons/TextureItem.cpp +) + +swig_add_library(Addons LANGUAGE python SOURCES ${ADDONS_SOURCE_FILES} TYPE MODULE) +swig_link_libraries(Addons ${OCCT_MODEL_LIBRARIES} ${OCCT_VISUALIZATION_LIBRARIES} Python3::Module) +post_swig_target_setup(Addons) + +################ +# Installation # +################ +if(WIN32) + set(EXTENSION "pyd") +else(WIN32) + set(EXTENSION "so") +endif(WIN32) +set(BUILD_DIR ${CMAKE_CURRENT_BINARY_DIR}/${LIBRARY_OUTPUT_PATH}) + +# install pythonOCC modules +foreach(OCCT_MODULE ${OCCT_TOOLKIT_MODEL}) + install(FILES ${BUILD_DIR}/${OCCT_MODULE}.py DESTINATION ${PYTHONOCC_INSTALL_DIRECTORY}/Core) + install(TARGETS ${OCCT_MODULE} DESTINATION ${PYTHONOCC_INSTALL_DIRECTORY}/Core) + install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/src/SWIG_files/wrapper/${OCCT_MODULE}.pyi DESTINATION + ${PYTHONOCC_INSTALL_DIRECTORY}/Core) +endforeach(OCCT_MODULE) + +# install tesselator +install(FILES ${BUILD_DIR}/Tesselator.py DESTINATION ${PYTHONOCC_INSTALL_DIRECTORY}/Core) +install(TARGETS Tesselator DESTINATION ${PYTHONOCC_INSTALL_DIRECTORY}/Core) + +if(PYTHONOCC_WRAP_VISU) + foreach(OCCT_MODULE ${OCCT_TOOLKIT_VISUALIZATION}) + install(FILES ${BUILD_DIR}/${OCCT_MODULE}.py DESTINATION ${PYTHONOCC_INSTALL_DIRECTORY}/Core) + install(TARGETS ${OCCT_MODULE} DESTINATION ${PYTHONOCC_INSTALL_DIRECTORY}/Core) + install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/src/SWIG_files/wrapper/${OCCT_MODULE}.pyi DESTINATION + ${PYTHONOCC_INSTALL_DIRECTORY}/Core) + endforeach(OCCT_MODULE) + + # install MeshDataSource + install(FILES ${BUILD_DIR}/MeshDS.py DESTINATION ${PYTHONOCC_INSTALL_DIRECTORY}/Core) + install(TARGETS MeshDS DESTINATION ${PYTHONOCC_INSTALL_DIRECTORY}/Core) +endif(PYTHONOCC_WRAP_VISU) + +if(PYTHONOCC_WRAP_DATAEXCHANGE) + foreach(OCCT_MODULE ${OCCT_TOOLKIT_DATAEXCHANGE}) + install(FILES ${BUILD_DIR}/${OCCT_MODULE}.py DESTINATION ${PYTHONOCC_INSTALL_DIRECTORY}/Core) + install(TARGETS ${OCCT_MODULE} DESTINATION ${PYTHONOCC_INSTALL_DIRECTORY}/Core) + install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/src/SWIG_files/wrapper/${OCCT_MODULE}.pyi DESTINATION + ${PYTHONOCC_INSTALL_DIRECTORY}/Core) + endforeach(OCCT_MODULE) +endif(PYTHONOCC_WRAP_DATAEXCHANGE) + +if(PYTHONOCC_WRAP_OCAF) + foreach(OCCT_MODULE ${OCCT_TOOLKIT_OCAF}) + # install the python interface file (python module) + install(FILES ${BUILD_DIR}/${OCCT_MODULE}.py DESTINATION ${PYTHONOCC_INSTALL_DIRECTORY}/Core) + install(TARGETS ${OCCT_MODULE} DESTINATION ${PYTHONOCC_INSTALL_DIRECTORY}/Core) + install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/src/SWIG_files/wrapper/${OCCT_MODULE}.pyi DESTINATION + ${PYTHONOCC_INSTALL_DIRECTORY}/Core) + endforeach(OCCT_MODULE) +endif(PYTHONOCC_WRAP_OCAF) + +# install third part modules +if(PYTHONOCC_WRAP_VISU) + install(FILES ${BUILD_DIR}/Visualization.py DESTINATION ${PYTHONOCC_INSTALL_DIRECTORY}/Core) + install(TARGETS Visualization DESTINATION ${PYTHONOCC_INSTALL_DIRECTORY}/Core) +endif(PYTHONOCC_WRAP_VISU) + +# install addons +install(FILES ${BUILD_DIR}/Addons.py DESTINATION ${PYTHONOCC_INSTALL_DIRECTORY}/Core ) +install(TARGETS Addons DESTINATION ${PYTHONOCC_INSTALL_DIRECTORY}/Core ) + +# install Display +install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/src/Display DESTINATION ${PYTHONOCC_INSTALL_DIRECTORY}) + +# install LICENSE file +install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/LICENSE DESTINATION ${PYTHONOCC_INSTALL_DIRECTORY}) + +# install AUTHORS file +install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/AUTHORS DESTINATION ${PYTHONOCC_INSTALL_DIRECTORY}) + +# install Exception.py, __init__ and py.typed +# install __init__.py file +install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/src/PkgBase/__init__.py DESTINATION ${PYTHONOCC_INSTALL_DIRECTORY}) +install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/src/PkgBase/__init__.py DESTINATION ${PYTHONOCC_INSTALL_DIRECTORY}/Core) +install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/src/PkgBase/Exception.py DESTINATION ${PYTHONOCC_INSTALL_DIRECTORY}/Core) +# following file is necessary to mypy to use .pyi stub files +install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/src/PkgBase/py.typed DESTINATION ${PYTHONOCC_INSTALL_DIRECTORY}/Core) + +# install Extend +install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/src/Extend DESTINATION ${PYTHONOCC_INSTALL_DIRECTORY}) + +# install Wrapper utils +install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/src/Wrapper DESTINATION ${PYTHONOCC_INSTALL_DIRECTORY}) diff --git a/custom_occt.cmake b/custom_occt.cmake new file mode 100644 index 000000000..d4b1ec4b7 --- /dev/null +++ b/custom_occt.cmake @@ -0,0 +1,4 @@ +set(OpenCASCADE_INCLUDE_DIR "${OCCT_ROOT}/occt-vc144-64/inc") +set(OpenCASCADE_LIBRARY_DIR "${OCCT_ROOT}/occt-vc144-64/lib") +set(THIRD_PARTY_INCLUDE_DIR "${OCCT_ROOT}/3rdparty-vc14-64/include") +set(THIRD_PARTY_LIBRARY_DIR "${OCCT_ROOT}/3rdparty-vc14-64/lib") \ No newline at end of file