CMakeLists.txt 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. cmake_minimum_required(VERSION 3.10)
  2. project(numpy_bindings)
  3. # Set C++ standard
  4. set(CMAKE_CXX_STANDARD 17)
  5. set(CMAKE_CXX_STANDARD_REQUIRED ON)
  6. set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
  7. # Add pocketpy as a subdirectory
  8. add_subdirectory("${CMAKE_CURRENT_SOURCE_DIR}/../../.." "${CMAKE_CURRENT_BINARY_DIR}/pocketpy")
  9. # Include pybind11 and numpy
  10. include_directories("${CMAKE_CURRENT_SOURCE_DIR}/../../../include")
  11. include_directories("${CMAKE_CURRENT_SOURCE_DIR}/../include")
  12. # Control xtensor warnings (OFF by default)
  13. option(SHOW_XTENSOR_WARNINGS "Show warnings from xtensor" OFF)
  14. if(MSVC)
  15. add_compile_options(/wd4018 /wd4172 /wd4819)
  16. add_compile_options(/bigobj)
  17. endif()
  18. # Suppress xtensor warnings if SHOW_XTENSOR_WARNINGS is OFF
  19. if(NOT SHOW_XTENSOR_WARNINGS)
  20. add_compile_definitions(SUPPRESS_XTENSOR_WARNINGS)
  21. if(MSVC)
  22. add_compile_options(/wd4244 /wd4267 /wd4018)
  23. else()
  24. add_compile_options(-Wno-sign-compare -Wno-conversion -Wno-unused-variable -Wno-unused-parameter)
  25. endif()
  26. endif()
  27. # Add numpy source and test files
  28. file (GLOB SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/../src/numpy.cpp")
  29. file (GLOB TESTS "${CMAKE_CURRENT_SOURCE_DIR}/test_numpy.cpp")
  30. # Create numpy executables
  31. add_executable(numpy_bindings ${TESTS} ${SOURCES})
  32. # Set VS debugger working directory (if relevant)
  33. set_property(TARGET ${PROJECT_NAME} PROPERTY VS_DEBUGGER_WORKING_DIRECTORY CMAKE_CURRENT_LIST_DIR)
  34. # Link numpy with pocketpy
  35. target_link_libraries(${PROJECT_NAME} PRIVATE pocketpy)