cmake_minimum_required(VERSION 3.10)
project(SmartAgriculture VERSION 1.0.0 LANGUAGES CXX)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
# 查找常见的农业传感器库
find_package(PkgConfig REQUIRED)
pkg_check_modules(SENSOR_LIBS REQUIRED libmodbus libgpiod wiringPi)
# MQTT协议支持
find_package(PahoMqttCpp REQUIRED)
# CoAP协议支持
find_package(libcoap REQUIRED)
# SQLite3用于本地数据存储
find_package(SQLite3 REQUIRED)
# 可选: PostgreSQL支持
option(USE_POSTGRESQL "Enable PostgreSQL support" OFF)
if(USE_POSTGRESQL)
find_package(PostgreSQL REQUIRED)
endif()
# 源文件组织
set(SOURCES
src/main.cpp
src/sensor/SensorManager.cpp
src/iot/MQTTClient.cpp
src/data/DatabaseHandler.cpp
)
# 包含目录
include_directories(
${PROJECT_SOURCE_DIR}/include
${SENSOR_LIBS_INCLUDE_DIRS}
${PahoMqttCpp_INCLUDE_DIRS}
)
# 针对树莓派等设备的交叉编译设置
if(ARM_TARGET)
set(CMAKE_SYSTEM_NAME Linux)
set(CMAKE_SYSTEM_PROCESSOR arm)
# 设置交叉编译工具链路径
set(CMAKE_C_COMPILER /path/to/arm-linux-gnueabihf-gcc)
set(CMAKE_CXX_COMPILER /path/to/arm-linux-gnueabihf-g++)
# 针对农业设备的优化
add_compile_options(-mcpu=cortex-a53 -mfpu=neon-vfpv4 -mfloat-abi=hard)
endif()
option(WITH_OPENCV "Enable OpenCV for plant image analysis" ON)
if(WITH_OPENCV)
find_package(OpenCV REQUIRED)
list(APPEND SOURCES src/imaging/PlantHealthAnalyzer.cpp)
include_directories(${OpenCV_INCLUDE_DIRS})
endif()
option(WITH_ML "Enable machine learning features" OFF)
if(WITH_ML)
find_package(TensorFlowLite REQUIRED)
list(APPEND SOURCES src/ml/YieldPredictor.cpp)
endif()
# 主程序安装
install(TARGETS SmartAgriculture DESTINATION bin)
# 配置文件安装
install(DIRECTORY config/ DESTINATION etc/SmartAgriculture)
# 系统服务文件(用于自动启动)
if(LINUX)
install(FILES scripts/smart-agriculture.service
DESTINATION /lib/systemd/system)
endif()
# 启用测试
enable_testing()
# 添加传感器模拟测试
add_executable(test_sensor_simulator tests/sensor_simulator.cpp)
target_link_libraries(test_sensor_simulator ${PROJECT_NAME} ${SENSOR_LIBS_LIBRARIES})
add_test(NAME SensorSimulatorTest COMMAND test_sensor_simulator)
cmake_minimum_required(VERSION 3.10)
project(SmartAgriculture VERSION 1.0.0 LANGUAGES CXX)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
# 查找依赖
find_package(PkgConfig REQUIRED)
pkg_check_modules(SENSOR_LIBS REQUIRED libmodbus libgpiod)
find_package(PahoMqttCpp REQUIRED)
find_package(SQLite3 REQUIRED)
# 源文件
set(SOURCES
src/main.cpp
src/sensor/SensorManager.cpp
src/iot/MQTTClient.cpp
src/data/DatabaseHandler.cpp
)
# 构建主程序
add_executable(SmartAgriculture ${SOURCES})
target_link_libraries(SmartAgriculture
PRIVATE
${SENSOR_LIBS_LIBRARIES}
PahoMqttCpp::PahoMqttCpp
SQLite::SQLite3
)
# 安装
install(TARGETS SmartAgriculture DESTINATION bin)
install(DIRECTORY config/ DESTINATION etc/SmartAgriculture)
option(WITH_GREENHOUSE "Enable greenhouse control features" OFF)
if(WITH_GREENHOUSE)
list(APPEND SOURCES src/greenhouse/ClimateController.cpp)
target_compile_definitions(SmartAgriculture PRIVATE ENABLE_GREENHOUSE)
endif()
if(OPTIMIZE_FOR_EMBEDDED)
add_compile_options(-Os -flto)
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -flto")
endif()
option(ENABLE_REMOTE_DEBUG "Enable remote debugging support" OFF)
if(ENABLE_REMOTE_DEBUG)
add_compile_definitions(REMOTE_DEBUG_ENABLED)
list(APPEND SOURCES src/debug/RemoteDebugger.cpp)
endif()
这些配置技巧可以帮助您构建一个功能完善、可扩展的Linux智能农业应用程序,涵盖从传感器数据采集到云端数据传输的各个环节。