0

我希望这里有人知道 PyHLA。基本上它允许您在 python API 中使用 C++ 代码。我正在尝试使用 cmake 用 python3.6 构建它,因为我需要用它运行莫尔斯模拟,而莫尔斯至少需要 python3.3。我有 python 3.6 和 2.7,我不知道为什么,但我不能用 python 3.6 构建。

这就是我要运行的cmake . -DPYTHON_EXECUTABLE=/usr/bin/python3.6

-- Configuring PyHLA version 1.1.1
Python 3.6.9
-- Using Python: 
CMake Error at CMakeLists.txt:29 (message):
  You need at least Python 2.5, found:
-- Configuring incomplete, errors occurred!
See also "/home/mohamed/Documents/PyHLA-1.1.1-Source/CMakeFiles/CMakeOutput.log".

当我运行时cmake . -DPYTHON_EXECUTABLE=/usr/bin/python2.7,我得到:

-- Configuring PyHLA version 1.1.1
-- Found PythonInterp: /usr/bin/python2.7 (found version "2.7.17") 
-- Using Python: 2.7.17
-- Python modules will be installed in: /usr/local
Cannot find Python mkhowto rules for generating doc not added.
-- HLA 1.3 RTI library found: /usr/local/lib/libRTI-NG.a /usr/local/lib/libRTI-NGd.so
-- IEEE 1516 RTI library found: /usr/local/lib/libRTI1516.a /usr/local/lib/libRTI1516d.so
-- IEEE 1516 Evolved RTI library found: /usr/local/lib/libRTI1516e.a /usr/local/lib/libRTI1516ed.so
-- HLA 1.3 RTI FedTime found: /usr/local/lib/libFedTime.a /usr/local/lib/libFedTimed.so
-- IEEE 1516 RTI FedTime found: /usr/local/lib/libFedTime1516.a /usr/local/lib/libFedTime1516d.so
-- IEEE 1516 Evolved RTI FedTime found: /usr/local/lib/libFedTime1516e.a /usr/local/lib/libFedTime1516ed.so
-- HLA 1.3 RTI headers found: /usr/local/include/hla13
-- IEEE 1516 RTI headers found: /usr/local/include/hla13
-- IEEE 1516 Evolved RTI headers found: /usr/local/include/hla13
-- Found CERTI version: 4.0.0
-- Configuring done
-- Generating done
-- Build files have been written to: /home/mohamed/Documents/PyHLA-1.1.1-Source

问题是当我使用python2.7构建并尝试使用python3.6时,我当然会收到错误:

Import Error: undefined symbol _Py_ZeroStruct

有没有人设法将 hla 与 Morse 一起使用?

这是CMakeLists.txt

PROJECT(PyHLA C CXX)
# SET(CMAKE_VERBOSE_MAKEFILE ON)

CMAKE_MINIMUM_REQUIRED(VERSION 3.7.2)

SET(PACKAGE_NAME "PyHLA")
SET(PACKAGE_VERSION_MAJOR "1")
SET(PACKAGE_VERSION_MINOR "1")
SET(PACKAGE_VERSION_PATCH "2cvs")
SET(PACKAGE_VERSION "${PACKAGE_VERSION_MAJOR}.${PACKAGE_VERSION_MINOR}.${PACKAGE_VERSION_PATCH}")

MESSAGE(STATUS "Configuring ${PACKAGE_NAME} version ${PACKAGE_VERSION}")

SET(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_INSTALL_PREFIX}/share/scripts)
SET(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR})

FIND_PACKAGE(PythonLibs REQUIRED)
FIND_PACKAGE(PythonInterp REQUIRED)
MESSAGE(STATUS "Using Python: ${PYTHON_VERSION_STRING}")
MESSAGE(STATUS "python_packages_path : ${PYTHON_PACKAGES_PATH}")
MESSAGE(STATUS "python_version : ${PYTHON_VERSION_STRING}")
MESSAGE(STATUS "python_include_path : ${PYTHON_INCLUDE_PATH}")
MESSAGE(STATUS "python_library : ${PYTHON_LIBRARY}")

SET(PYTHON_NEEDED_VERSION "2.5")
IF("${PYTHON_VERSION_STRING}" VERSION_LESS "${PYTHON_NEEDED_VERSION}")
    message(FATAL_ERROR "You need at least Python ${PYTHON_NEEDED_VERSION}, found: ${PYTHON_VERSION_STRING}")
ENDIF("${PYTHON_VERSION_STRING}" VERSION_LESS "${PYTHON_NEEDED_VERSION}")

IF(NOT PYTHON_PACKAGES_PATH)
    EXECUTE_PROCESS(
        COMMAND "${PYTHON_EXECUTABLE}" "${CMAKE_CURRENT_SOURCE_DIR}/GetPackagesPath.py"
        OUTPUT_VARIABLE PYTHON_PACKAGES_PATH)
    MESSAGE(STATUS "Found Python modules: ${PYTHON_PACKAGES_PATH}")
    SET(PYTHON_PACKAGES_PATH "${PYTHON_PACKAGES_PATH}"
        CACHE PATH "Path to Python modules.")
ENDIF(NOT PYTHON_PACKAGES_PATH)

# Use the PYTHON_PACKAGES_PATH as a default CMAKE_INSTALL_PREFIX
IF (CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
    SET(CMAKE_INSTALL_PREFIX "${PYTHON_PACKAGES_PATH}"
        CACHE PATH "PyHLA install path prefix, prepended onto install directories." FORCE)
ENDIF (CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
MESSAGE(STATUS "Python modules will be installed in: ${CMAKE_INSTALL_PREFIX}")

ADD_SUBDIRECTORY(doc)
ADD_SUBDIRECTORY(hla)
ADD_SUBDIRECTORY(test)

SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Python bindings for the Modeling and Simulation (M&S) High Level Architecture (HLA)")
SET(CPACK_PACKAGE_VENDOR "Petr Gotthard")
SET(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/COPYING")
SET(CPACK_PACKAGE_NAME ${PACKAGE_NAME})
SET(CPACK_SYSTEM_NAME ${CMAKE_SYSTEM_NAME})

SET(CPACK_PACKAGE_VERSION ${PACKAGE_VERSION})
SET(CPACK_PACKAGE_VERSION_MAJOR ${PACKAGE_VERSION_MAJOR})
SET(CPACK_PACKAGE_VERSION_MINOR ${PACKAGE_VERSION_MINOR})
SET(CPACK_PACKAGE_VERSION_PATCH ${PACKAGE_VERSION_PATCH})

IF (WIN32)
    SET(CPACK_SOURCE_GENERATOR "ZIP")
    SET(CPACK_GENERATOR "NSIS;ZIP")
    SET(CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}-win32-py${PYTHON_VERSION_STRING}")
ELSE (WIN32)
    SET(CPACK_SOURCE_GENERATOR "TGZ;ZIP")
    SET(CPACK_GENERATOR "TGZ;ZIP;RPM")
ENDIF (WIN32)

SET(CPACK_SOURCE_IGNORE_FILES
    "~" ".log" ".pdf" ".dvi" ".pyc" ".so" ".dll" ".zip" ".tar.gz" ".rpm"
    ".comFedRTI."
    "/.cvsignore" "/Makefile" "/CMakeCache.txt" "/cmake_install.cmake" "/CPack.*.cmake"
    "/Testing"
    "/CVS/" "/CMakeFiles/" "/_CPack_Packages/")

INCLUDE(CPack)

### Uninstall ###
configure_file("${CMAKE_HOME_DIRECTORY}/cmake_uninstall.cmake.in" "cmake_uninstall.cmake" IMMEDIATE @ONLY)
add_custom_target(uninstall "${CMAKE_COMMAND}" -P "cmake_uninstall.cmake")
4

0 回答 0