set(tool_path /usr/local/arm/opt/EmbedSky/gcc-linaro-5.3.1-2016.05-x86_64_arm-linux-gnueabihf)
set(CMAKE_C_COMPILER ${tool_path}/bin/arm-linux-gnueabihf-gcc)
set(CMAKE_CXX_COMPILER ${tool_path}/bin/arm-linux-gnueabihf-g++)
set(CMAKE_CROSSCOMPILING TRUE)
set(CMAKE_SYSTEM_NAME "Linux")
set(CMAKE_SYSTEM_PROCESSOR arm)
set(CMAKE_FIND_ROOT_PATH ${tool_path})
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)
#project
cmake_minimum_required(VERSION 2.6)
project(hello)
#var
set(target_name hello)
set(target_src )
set(lib_name src)
set(sub_src ./src)
#include
include_directories(${sub_src})
#src
aux_source_directory(. target_src)
add_subdirectory(${sub_src})
#bin
add_executable(${target_name} ${target_src})
#link
target_link_libraries(${target_name} ${lib_name})
这个脚本实现了使用arm-linux-gnueabihf-来编译一个hello.c的文件,最终生成的可执行文件也是hello,hello.c调用了./src文件夹下的一个foo.c里面的函数,这个函数的声明在foo.h,跟foo.c在同一个文件夹,这个模块生成的lib名字叫src,在连接hello的时候被调用
第1行 交叉编译器的路径是:/usr/local/arm/opt/EmbedSky/gcc-linaro-5.3.1-2016.05-x86_64_arm-linux-gnueabihf
第4,5行 指定编译器的可执行文件路径
第11行 指定查找库的路径
第28行 指定hello.c查找头文件的路径
第32行 包含子文件路径
第36行 指定生成可执行文件名hello
第40行 连接hello的时候依赖库libsrc