cmake_minimum_required(VERSION 3.10) project(UniversalCan VERSION 1.0.0) # 设置C标准(纯C工程) set(CMAKE_C_STANDARD 11) set(CMAKE_C_STANDARD_REQUIRED ON) # 公共部分(所有平台共享) set(COMMON_INCLUDES ${CMAKE_CURRENT_SOURCE_DIR}/Inc ${CMAKE_CURRENT_SOURCE_DIR}/OsSample ) set(COMMON_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/Src/*.c ${CMAKE_CURRENT_SOURCE_DIR}/OsSample/*.c ) # Windows平台(包括MinGW) if(WIN32 OR MINGW) message(STATUS "Configuring for Windows/MinGW") # Windows平台特定包含目录 set(PLATFORM_INCLUDES ${CMAKE_CURRENT_SOURCE_DIR}/Device/ScHHS ${CMAKE_CURRENT_SOURCE_DIR}/Device/ScHHS/Port ${CMAKE_CURRENT_SOURCE_DIR}/Device/Zlg/Port ) # Windows平台特定源文件 set(PLATFORM_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/Device/ScHHS/Port/*.c ${CMAKE_CURRENT_SOURCE_DIR}/Device/Zlg/Port/*.c ) # Windows平台链接库 set(PLATFORM_LIBS HCanbus # 四川何华盛的库 ws2_32 # winsock库 ) # Windows平台链接目录 set(PLATFORM_LINK_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/Device/ScHHS ) # Windows平台定义 add_definitions(-D_WIN32_WINNT=0x0601) # Linux平台 elseif(UNIX) message(STATUS "Configuring for Linux") # Linux平台特定包含目录(假设有Linux设备目录) set(PLATFORM_INCLUDES ${CMAKE_CURRENT_SOURCE_DIR}/Device/Linux ) # Linux平台特定源文件 set(PLATFORM_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/Device/Linux/*.c ) # Linux平台链接库 set(PLATFORM_LIBS pthread rt ) # Linux平台链接目录 set(PLATFORM_LINK_DIRS "") endif() # 收集所有源文件 file(GLOB COMMON_SRC ${COMMON_SOURCES}) file(GLOB PLATFORM_SRC ${PLATFORM_SOURCES}) # 创建可执行文件 add_executable(${PROJECT_NAME} ${COMMON_SRC} ${PLATFORM_SRC}) # 设置包含目录 target_include_directories(${PROJECT_NAME} PRIVATE ${COMMON_INCLUDES} ${PLATFORM_INCLUDES} ) # 设置链接目录 target_link_directories(${PROJECT_NAME} PRIVATE ${PLATFORM_LINK_DIRS}) # 链接库 target_link_libraries(${PROJECT_NAME} ${PLATFORM_LIBS})