1、 在项目的CMakeLists.txt的开始处加上如下图所示配置(配置中的目录为你需要编译器的目录),平时开发调试的时候,设置SET(CROSS_COMPILE 0) 即不启用交叉编译。
2、 交叉编译:首先SET(CROSS_COMPILE 1),然后把项目通过scp传输到linux虚拟机或者服务器上
3、执行 cmake /path/your/project (项目根目录),这一步会生成交叉环境配置的Makefile
4、 在项目根目录,执行 make ,这一步会生成和项目名同名的可执行文件demo中为hello
5、Scp可执行文件到开发版,运行可执行文件。
SET(CROSS_COMPILE 1)
IF(CROSS_COMPILE)
SET(
CMAKE_SYSTEM_NAME linux)
SET(
TOOLCHAIN_DIR "/home/sz/project/arm-linux-gnueabihf")
# specify the cross compiler
SET(CMAKE_C_COMPILER ${TOOLCHAIN_DIR}/bin/arm-linux-gnueabihf-gcc)
SET(
CMAKE_CXX_COMPILER ${TOOLCHAIN_DIR}/bin/arm-linux-gnueabihf-g++)
SET(
GNU_FLAGS "-mfpu=vfp -fPIC")
SET(
CMAKE_CXX_FLAGS "${GNU_FLAGS} ")
SET(
CMAKE_C_FLAGS "${GNU_FLAGS} ")
# where is the target environment
SET(CMAKE_FIND_ROOT_PATH ${TOOLCHAIN_DIR}
${TOOLCHAIN_DIR}/arm-linux-gnueabihf/include
${TOOLCHAIN_DIR}/arm-linux-gnueabihf/lib)
# search for programs in the build host directories (notnecessary)
SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM
NEVER)
# for libraries and headers in the target directories
SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY
ONLY)
SET(
CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
ENDIF(CROSS_COMPILE)