Files
Obsidian/笔记/CMakeLists.md
2025-08-23 15:15:57 +08:00

2.8 KiB

cmake_minimum_required(VERSION 3.28)  
project(Ant)  
  
# 定义默认编译器  
set(DEFAULT_BYL "dg")  
# 检查自定义编译器参数  
if (NOT DEFINED BYL)  
    set(BYL ${DEFAULT_BYL})  
endif ()  
  
if (CMAKE_SYSTEM_NAME STREQUAL "Linux")  
    if (BYL STREQUAL "jr")#菁蓉  
        set(CMAKE_C_COMPILER "/opt/jr-gcc-aarch64-7.5.0/bin/aarch64-linux-gnu-gcc")  
        set(CMAKE_CXX_COMPILER "/opt/jr-gcc-aarch64-7.5.0/bin/aarch64-linux-gnu-g++")  
        set(LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/build.${PROJECT_NAME}/lib/jr)  
    elseif (BYL STREQUAL "lj")#两江  
        set(CMAKE_C_COMPILER "/opt/lj-gcc-aarch64-10.3/bin/aarch64-none-linux-gnu-gcc")  
        set(CMAKE_CXX_COMPILER "/opt/lj-gcc-aarch64-10.3/bin/aarch64-none-linux-gnu-g++")  
        set(LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/build.${PROJECT_NAME}/lib/lj)  
    elseif (BYL STREQUAL "dg")#典格  
        set(CMAKE_C_COMPILER "/opt/dg-gcc-aarch64-7.4.1/bin/aarch64-linux-gnu-gcc")  
        set(CMAKE_CXX_COMPILER "/opt/dg-gcc-aarch64-7.4.1/bin/aarch64-linux-gnu-g++")  
        set(LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/build.${PROJECT_NAME}/lib/dg)  
    endif ()  
elseif (CMAKE_SYSTEM_NAME STREQUAL "Windows")  
    set(LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/build.${PROJECT_NAME}/lib/mingw810_64)  
endif ()  
  
set(CMAKE_CXX_STANDARD 17)  
  
#导入库  
include_directories(build.mbf/include build.mpcr/include)  
link_libraries(mpcr mbf)  
if (CMAKE_SYSTEM_NAME STREQUAL "Windows")  
    link_directories(build.mpcr/lib/mingw810_64 build.mbf/lib/mingw810_64)  
elseif (CMAKE_SYSTEM_NAME STREQUAL "Linux")  
    if (BYL STREQUAL "jr")#菁蓉  
        link_directories(build.mpcr/lib/jr build.mbf/lib/jr)  
    elseif (BYL STREQUAL "lj")#两江  
        link_directories(build.mpcr/lib/lj build.mbf/lib/lj)  
    elseif (BYL STREQUAL "dg")#典格  
        link_directories(build.mpcr/lib/dg build.mbf/lib/dg)  
    endif ()  
endif ()  
  
include_directories(.)  
aux_source_directory(. SRC_lIST)  
  
#add_library(Ant STATIC ${SRC_lIST})  
add_library(Ant SHARED ${SRC_lIST})  
#链接系统库  
if (CMAKE_SYSTEM_NAME STREQUAL "Windows")  
    target_link_libraries(${PROJECT_NAME} ws2_32)  
endif ()  
  
# 复制头文件  
# 设置源文件夹和目标文件夹  
set(SOURCE_DIR "${CMAKE_SOURCE_DIR}")  
set(TARGET_DIR "${CMAKE_SOURCE_DIR}/build.${PROJECT_NAME}/include")  
# 确保目标文件夹存在  
file(MAKE_DIRECTORY ${TARGET_DIR})  
# 复制 include 文件夹下的所有文件到 build.${PROJECT_NAME}/include 目录  
file(GLOB INCLUDE_FILES "${SOURCE_DIR}/*.h")  
file(COPY ${INCLUDE_FILES} DESTINATION ${TARGET_DIR})

# 交叉编译
cmake .. \
    -DCMAKE_C_COMPILER=/usr/bin/arm-linux-gnueabihf-gcc \
    -DCMAKE_CXX_COMPILER=/usr/bin/arm-linux-gnueabihf-g++ \
    -DCMAKE_BUILD_TYPE=Release