CMake arm linux交叉编译CMakeLists.txt示例


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

你可能感兴趣的:(cmake)