Browse Source

add modulcecomm.i and CMakeLists.txt for create python interface, not complete.

yuchuli 11 months ago
parent
commit
4aadf9a820

+ 105 - 0
src/common/modulecomm/CMakeLists.txt

@@ -0,0 +1,105 @@
+cmake_minimum_required(VERSION 3.10)  
+  
+# 设置项目名称  
+project(modulecomm)  
+  
+# 设置C++标准(如果需要)  
+set(CMAKE_CXX_STANDARD 11)  
+#set(CMAKE_CXX_STANDARD_REQUIRED ON)  
+
+set(CMAKE_SHARED_LIBRARY_PREFIX "")
+set(CMAKE_SHARED_LIBRARY_SUFFIX ".so")
+
+add_custom_command(  
+    OUTPUT modulecomm_wrap.cxx
+    COMMAND swig -c++ -python  -outcurrentdir ./../modulecomm.i  # 这是要运行的命令  
+    COMMENT "Running script to generate files" # 这条信息将在构建时显示  
+    VERBATIM # 这使得命令中的参数被直接传递,而不是被CMake进一步处理  
+)  
+# 假设你已经找到了PYTHON_EXECUTABLE  
+find_path(PYTHON_INCLUDE_DIRS NAMES Python.h PATHS "/usr/include/python3.10" PATH_SUFFIXES include  NO_DEFAULT_PATH)  
+   
+  
+if(PYTHON_INCLUDE_DIRS)  
+    message(STATUS "Found Python include dirs at ${PYTHON_INCLUDE_DIRS}")  
+    include_directories(${PYTHON_INCLUDE_DIRS})  
+else()  
+    message(FATAL_ERROR "Could not find Python include dirs")  
+endif()
+
+# 查找Qt组件  
+
+find_package(Qt5 COMPONENTS Core Xml REQUIRED) 
+
+# 添加你的源文件  
+
+set(SOURCE_FILES  
+    modulecomm.cpp
+    modulecomm_base.cpp
+    shm/modulecomm_shm.cpp
+    shm/procsm.cpp
+    shm/procsm_if.cpp
+    inter/intercomm.cpp
+    inter/modulecomm_inter.cpp
+)  
+
+  
+
+# 添加你的头文件,moc会处理这些文件  
+
+set(HEADER_FILES  
+   ivmodulemsg_type.h
+   modulecomm.h
+   modulecomm_base.h
+   ivstdcolorout.h
+   shm/modulecomm_shm.h
+   shm/procsm.h 
+   shm/procsm_if.h
+
+)  
+
+  
+
+# 使用qt5_wrap_cpp来处理moc文件  
+
+qt5_wrap_cpp(MOC_SOURCES ${HEADER_FILES})  
+
+  
+
+# 将moc生成的文件添加到源文件中  
+
+list(APPEND SOURCE_FILES ${MOC_SOURCES})  
+  
+# 添加源文件  
+add_library(libmodulecomm SHARED ${SOURCE_FILES}) 
+
+#add_library(adcmodulecomm SHARED ${SOURCE_FILES}) 
+  
+# 添加头文件路径  
+target_include_directories(libmodulecomm PRIVATE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/shm ${CMAKE_CURRENT_SOURCE_DIR}/inter)  
+
+# 链接Qt库  
+
+target_link_libraries(libmodulecomm Qt5::Core Qt5::Xml)  
+
+# 添加源文件  
+add_library(_modulecomm SHARED ${SOURCE_FILES} modulecomm_wrap.cxx) 
+
+# 设置OUTPUT_NAME属性来去掉lib前缀  
+
+#set_target_properties(_modulecomm PROPERTIES OUTPUT_NAME adcmodulecomm) 
+
+#add_library(adcmodulecomm SHARED ${SOURCE_FILES}) 
+  
+# 添加头文件路径  
+target_include_directories(_modulecomm PRIVATE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/shm ${CMAKE_CURRENT_SOURCE_DIR}/inter)  
+
+# 链接Qt库  
+
+target_link_libraries(_modulecomm Qt5::Core Qt5::Xml)  
+  
+# 安装目标(如果需要)  
+#install(TARGETS MyLibrary DESTINATION lib)  
+  
+# 如果库依赖于其他库,可以使用 target_link_libraries 添加依赖  
+# 例如:target_link_libraries(MyLibrary PRIVATE SomeOtherLibrary)

+ 13 - 0
src/common/modulecomm/modulecomm.i

@@ -0,0 +1,13 @@
+%module modulecomm  
+
+  
+
+%{  
+
+#include "modulecomm.h"  
+
+%}  
+
+  
+
+%include "modulecomm.h"

+ 5 - 9
src/tool/testpythoncpp/modulecomm.h

@@ -4,20 +4,16 @@
 #include <QtCore/qglobal.h>
 #include <QDateTime>
 
-#if defined(MODULECOMM_LIBRARY)
-#  define MODULECOMMSHARED_EXPORT Q_DECL_EXPORT
-#else
-#  define MODULECOMMSHARED_EXPORT Q_DECL_IMPORT
-#endif
+
 
 typedef void (* SMCallBack)(const char * strdata,const unsigned int nSize,const unsigned int index,const QDateTime * dt,const char * strmemname);
 
 namespace iv {
 namespace modulecomm {
-void * MODULECOMMSHARED_EXPORT RegisterSend(const char * strcommname,const unsigned int nBufSize,const unsigned int nMsgBufCount);
-void * MODULECOMMSHARED_EXPORT RegisterRecv(const char * strcommname,SMCallBack pCall);
-void MODULECOMMSHARED_EXPORT ModuleSendMsg(void * pHandle,const char * strdata,const unsigned int nDataLen);
-void MODULECOMMSHARED_EXPORT Unregister(void * pHandle);
+void *  RegisterSend(const char * strcommname,const unsigned int nBufSize,const unsigned int nMsgBufCount);
+void *  RegisterRecv(const char * strcommname,SMCallBack pCall);
+void  ModuleSendMsg(void * pHandle,const char * strdata,const unsigned int nDataLen);
+void  Unregister(void * pHandle);
 
 }