1
0

CMakeLists.txt 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. cmake_minimum_required(VERSION 3.10)
  2. project(numpy)
  3. # Set C++ standard
  4. set(CMAKE_CXX_STANDARD 17)
  5. set(CMAKE_CXX_STANDARD_REQUIRED ON)
  6. # Include pybind11 and numpy
  7. include_directories("${CMAKE_CURRENT_LIST_DIR}/../../include")
  8. include_directories("${CMAKE_CURRENT_LIST_DIR}/include")
  9. # Control xtensor warnings (OFF by default)
  10. option(SHOW_XTENSOR_WARNINGS "Show warnings from xtensor" OFF)
  11. if(MSVC)
  12. add_compile_options(/wd4018 /wd4172 /wd4819)
  13. add_compile_options(/bigobj)
  14. endif()
  15. # Suppress xtensor warnings if SHOW_XTENSOR_WARNINGS is OFF
  16. if(NOT SHOW_XTENSOR_WARNINGS)
  17. add_compile_definitions(SUPPRESS_XTENSOR_WARNINGS)
  18. if(MSVC)
  19. add_compile_options(/wd4244 /wd4267 /wd4018)
  20. else()
  21. add_compile_options(-Wno-sign-compare -Wno-conversion -Wno-unused-variable -Wno-unused-parameter)
  22. endif()
  23. endif()
  24. # Add numpy source and test files
  25. file(GLOB_RECURSE SOURCES ${CMAKE_CURRENT_LIST_DIR}/src/*.cpp)
  26. # Create numpy dynamic library
  27. add_library(${PROJECT_NAME} SHARED ${SOURCES})
  28. # Define PY_DYNAMIC_MODULE for numpy
  29. target_compile_definitions(${PROJECT_NAME} PRIVATE PY_DYNAMIC_MODULE)
  30. # Link numpy with pocketpy
  31. if(WIN32)
  32. target_link_libraries(
  33. ${PROJECT_NAME}
  34. PRIVATE
  35. ${CMAKE_CURRENT_LIST_DIR}/../../build/Release/pocketpy.lib
  36. )
  37. else()
  38. target_link_libraries(
  39. ${PROJECT_NAME}
  40. PRIVATE
  41. ${CMAKE_CURRENT_LIST_DIR}/../../build/libpocketpy.so
  42. )
  43. endif()