MultiplePackages.cmake 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. enable_language(C)
  2. include(CTest)
  3. find_package (Python REQUIRED)
  4. if (CMake_TEST_FindPython2)
  5. find_package (Python2 REQUIRED COMPONENTS Interpreter Development)
  6. if (NOT CMake_TEST_FindPython3 AND NOT Python2_EXECUTABLE STREQUAL Python_EXECUTABLE)
  7. message (FATAL_ERROR
  8. "Python interpreters do not match:\n"
  9. " Python_EXECUTABLE='${Python_EXECUTABLE}'\n"
  10. " Python2_EXECUTABLE='${Python3_EXECUTABLE}'\n"
  11. )
  12. endif()
  13. Python2_add_library (spam2 MODULE spam.c)
  14. target_compile_definitions (spam2 PRIVATE PYTHON2)
  15. add_test (NAME python2_spam2
  16. COMMAND "${CMAKE_COMMAND}" -E env "PYTHONPATH=$<TARGET_FILE_DIR:spam2>"
  17. "${Python2_INTERPRETER}" -c "import spam2; spam2.system(\"cd\")")
  18. endif()
  19. if (CMake_TEST_FindPython3)
  20. find_package (Python3 REQUIRED COMPONENTS Interpreter Development)
  21. if (NOT Python3_EXECUTABLE STREQUAL Python_EXECUTABLE)
  22. message (FATAL_ERROR
  23. "Python interpreters do not match:\n"
  24. " Python_EXECUTABLE='${Python_EXECUTABLE}'\n"
  25. " Python3_EXECUTABLE='${Python3_EXECUTABLE}'\n"
  26. )
  27. endif()
  28. Python3_add_library (spam3 MODULE spam.c)
  29. target_compile_definitions (spam3 PRIVATE PYTHON3)
  30. add_test (NAME python3_spam3
  31. COMMAND "${CMAKE_COMMAND}" -E env "PYTHONPATH=$<TARGET_FILE_DIR:spam3>"
  32. "${Python3_INTERPRETER}" -c "import spam3; spam3.system(\"cd\")")
  33. endif()