使用 cmake 進行交叉編譯

使用 cmake 進行交叉編譯

cmake 由於「又」要額外學一門語言而被詬病,但這並不妨礙愈來愈多私人項目用 cmake 來管理;autoconfig 確實是更好的發行工具,但用 cmake 管理項目顯然更加的容易。若是要應用這些 cmake 管理的項目到嵌入式環境中,必然涉及交叉編譯的問題。html

這些項目交叉編譯,主要是設置一些環境變量。linux

這些設定能夠寫成一個 .cmake 文件,1) 須要交叉編譯時 include ,2)或者直接把這些配置寫到 CMakeLists.txt 文件的開始位置。兩種方法是等效的。工具

用下面語句應用寫好的配置。spa

include (cross.cmake)

下面是收集的幾個針對 arm 平臺的交叉編譯配置,參考這兩個配置,根據本身平臺的不一樣,進行定製修改便可。(感受直接制定編譯器便可?待驗證)htm

配置1blog

複製代碼

SET(CROSS_COMPILE 1)

IF(CROSS_COMPILE) 
  
SET(CMAKE_SYSTEM_NAME Linux)
SET(TOOLCHAIN_DIR "/home/zchx/Tools/opt/FriendlyARM/toolschain/4.5.1")

set(CMAKE_CXX_COMPILER ${TOOLCHAIN_DIR}/bin/arm-linux-g++)
set(CMAKE_C_COMPILER   ${TOOLCHAIN_DIR}/bin/arm-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}
 ${TOOLCHAIN_DIR}/arm-none-linux-gnueabi/include
 ${TOOLCHAIN_DIR}/arm-none-linux-gnueabi/lib )

include_directories(/usr/local/Trolltech/QtEmbedded-4.8.5-arm/include/)
include_directories(/home/zchx/Downloads/boost_1_49_0_arm)
link_directories(/home/zchx/Downloads/boost_1_49_0_arm/stage/lib)
link_directories(/home/zchx/Downloads/ffmpeg-1.0.8-arm/ffmpeglib/)
link_directories(/usr/local/Trolltech/QtEmbedded-4.8.5-arm/lib)
link_directories(/home/zchx/Downloads/live_arm/BasicUsageEnvironment/)
link_directories(/home/zchx/Downloads/live_arm/groupsock/)
link_directories(/home/zchx/Downloads/live_arm/liveMedia/)
link_directories(/home/zchx/Downloads/live_arm/UsageEnvironment/)
  
ENDIF(CROSS_COMPILE)

複製代碼

配置2get

複製代碼

#告知當前使用的是交叉編譯方式,必須配置
SET(CMAKE_SYSTEM_NAME Linux)

#指定編譯工具,必定要設置
#或交叉編譯器使用絕對地址
SET(CMAKE_C_COMPILER "arm-linux-gcc")
#指定C++交叉編譯器
SET(CMAKE_CXX_COMPILER "arm-linux-g++")
 
#不必定須要設置
#指定交叉編譯環境安裝目錄...
SET(CMAKE_FIND_ROOT_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)

複製代碼

 配置3編譯器

複製代碼

SET(CMAKE_SYSTEM_NAME Linux)
SET(CMAKE_SYSTEM_PROCESSOR arm) 
SET(TOOLCHAIN_DIR "/opt/mv_pro_4.0/montavista/pro/devkit/arm/v5t_le")
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)

SET(CMAKE_C_COMPILER ${TOOLCHAIN_DIR}/bin/arm_v5t_le-gcc)
SET(CMAKE_CXX_COMPILER ${TOOLCHAIN_DIR}/bin/arm_v5t_le-g++)

複製代碼

——————
不管在哪裏作什麼,只要堅持服務、創新、創造價值,其餘的東西天然都會來的。it

相關文章
相關標籤/搜索