```python 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}) ``` --- ``` bash # 交叉编译 cmake .. \ -DCMAKE_C_COMPILER=/usr/bin/arm-linux-gnueabihf-gcc \ -DCMAKE_CXX_COMPILER=/usr/bin/arm-linux-gnueabihf-g++ \ -DCMAKE_BUILD_TYPE=Release ```