|
@@ -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)
|