我使用https://launchpad.net/gcc-arm-embedded工具鏈進行cortex m4開發。cmake交叉編譯GNU工具
我在Windows7機器上,我已經安裝了多個版本的GNU ARM工具鏈。 C:\ Program Files文件(x86)的\ GNU工具ARM嵌入式\ 4.7 2013q2 4.8 2013q4 4.9 2014q4 4.9 2015q1
我用的是最新版本的CMake 3.2.2
我怎麼能強迫一個特殊的作爲例子的工具鏈4.9 2014q4 ???
我在網上看了很多東西,我也搜索一些用於ARM的工具鏈文件。
所以文件是一堆的所有信息,我的網站和或github上上找到...但它doesn't如我所料
這裏IST文件工作。
啓動文件
include(CMakeForceCompiler)
set(CMAKE_SYSTEM_NAME Generic)
set(CMAKE_SYSTEM_PROCESSOR cortex-m4)
# cmake calls this file twice
#if(NOT cross_configure)
#set(cross_configure 1)
## standard way
#CMAKE_FORCE_C_COMPILER(arm-none-eabi-gcc GNU)
#CMAKE_FORCE_CXX_COMPILER(arm-none-eabi-g++ GNU)
# search for the toolchain
if(NOT TOOLCHAIN_DIR)
set(TOOLCHAIN_DIR "c:/Program Files (x86)/GNU Tools ARM Embedded/4.9 2014q4")
else()
message(STATUS ${TOOLCHAIN_DIR})
endif()
find_program(GNU_ARM_C arm-none-eabi-gcc ${TOOLCHAIN_DIR})
find_program(GNU_ARM_CXX arm-none-eabi-g++ ${TOOLCHAIN_DIR})
find_program(GNU_ARM_OBJCOPY arm-none-eabi-objcopy ${TOOLCHAIN_DIR})
find_program(GNU_ARM_SIZE_TOOL arm-none-eabi-size ${TOOLCHAIN_DIR})
CMAKE_FORCE_C_COMPILER(${GNU_ARM_C} GNU)
CMAKE_FORCE_CXX_COMPILER(${GNU_ARM_CXX} GNU)
# works without
#set(CMAKE_ASM_COMPILER ${GNU_ARM_C})
# Find the target environment prefix..
# First see where gcc is keeping libc.a
execute_process(
COMMAND ${CMAKE_C_COMPILER} -print-file-name=libc.a
OUTPUT_VARIABLE CMAKE_INSTALL_PREFIX
OUTPUT_STRIP_TRAILING_WHITESPACE
)
# Strip the filename off
get_filename_component(CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}" PATH)
# Then find the canonical path to the directory one up from there
get_filename_component(CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}/.." REALPATH)
set(CMAKE_INSTALL_PREFIX ${CMAKE_INSTALL_PREFIX} CACHE FILEPATH "Install path prefix, prepended onto install directories.")
message(STATUS "cross compiling with gnu tools ...")
message(STATUS "toolchain prefix: ${CMAKE_INSTALL_PREFIX}")
set(CMAKE_FIND_ROOT_PATH ${CMAKE_INSTALL_PREFIX})
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
年底文件
首先嚐試:
cmake -DCMAKE_TOOLCHAIN_FILE=../cmake/toolchain-gnu-tools-arm-embedded-cortex-m4.cmake -G"MinGW Makefiles" ../
所以,我想它=>它的工作原理是使用從系統路徑的編譯器。 。最新版本在這條路上(4.9 2015q1)
第二個嘗試:
cmake -DCMAKE_TOOLCHAIN_FILE=../cmake/toolchain-gnu-tools-arm-embedded-cortex-m4.cmake -DTOOLCHAIN_DIR="c:\Program Files (x86)\GNU Tools ARM Embedded\4.9 2014q4" -G"MinGW Makefiles" ../
=>我使用了源構建我刪除整個build目錄並重新運行.. =>但doesn't工作方式...... cmake的用途編譯器再次在路徑上。
第三次嘗試: 我重新啓動後,從系統路徑=>中移除編譯器。
但我想編寫一個工具鏈文件,它選擇特定版本/路徑上的編譯器......並且如果系統路徑上有版本,這也應該工作。
這是可能與cmake我搜查了很多,但我沒有找到解決辦法。
感謝您的幫助