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