92 lines
2.2 KiB
CMake
92 lines
2.2 KiB
CMake
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})
|