CMake跨平台交叉编译

1 CMake跨平台交叉编译配置

【cross.cmake】

# cross.cmake文件
# 设置为1则表示交叉编译,设置为0则表示x86 gcc编译
SET(CROSS_COMPILE 1)

IF(CROSS_COMPILE)
SET(CMAKE_SYSTEM_NAME Linux)
SET(TOOLCHAIN_DIR "/opt/hisi-linux/x86-arm/arm-hisiv300-linux/target")
set(CMAKE_CXX_COMPILER ${TOOLCHAIN_DIR}/bin/arm-hisiv300-linux-g++)
set(CMAKE_C_COMPILER ${TOOLCHAIN_DIR}/bin/arm-hisiv300-linux-gcc)

#set(GNU_FLAGS "-mfpu=vfp -fPIC")
#set(CMAKE_CXX_FLAGS "${GNU_FLAGS} ")
#set(CMAKE_C_FLAGS "${GNU_FLAGS}  ")

SET(CMAKE_FIND_ROOT_PATH ${TOOLCHAIN_DIR})
SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)

ENDIF(CROSS_COMPILE)

然后再CMakeLists.txt中引用即可:
【CMakeLists.txt】

include (cross.cmake)

cmake_minimum_required(VERSION 2.8)
set(CMAKE_VERBOSE_MAKEFILE on)
project(anjos-demo)

set(CMAKE_BUILD_TYPE DEBUG)

SET(CMAKE_CXX_FLAGS_DEBUG "$ENV{CXXFLAGS} -O0 -Wall -g")
SET(CMAKE_CXX_FLAGS_RELEASE "$ENV{CXXFLAGS} -O3 -Wall")

set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
#set(CMAKE_C_STANDARD 99)
file(GLOB SRC_FILES *.c *.h thirdparty/webrtc/rtc_base/*.c*)
include_directories(thirdparty/webrtc)

#add_executable(anjos-demo ${SRC_FILES})
#target_link_libraries(anjos-demo pthread)

add_library(anjos STATIC ${SRC_FILES})#生成静态库
#add_library(anjos SHARED ${SRC_FILES}) #生成动态库

2 编译

进入当前目录下的./build/下:

cd ./build
#由cmake自动生成Makefile文件
cmake ..
#开始编译
make -j40

Reference

使用 cmake 进行交叉编译
CMake指定编译模式
CMake添加-g编译选项

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值