Это мой первый проект CMake, включающий кросс-компиляцию.
Это мой файл CMakeLists.txt:
CMAKE_MINIMUM_REQUIRED(VERSION 3.10)
INCLUDE(${CMAKE_CURRENT_SOURCE_DIR}/config.cmake)
PROJECT(proj1)
ENABLE_LANGUAGE(ASM)
SET(ASM_SOURCES "boot/start.s")
ADD_EXECUTABLE(${CMAKE_PROJECT_NAME} ${ASM_SOURCES})
и включает файл config.cmake:
SET(TOOLCHAIN_PREFIX "arm-rookieboard-eabi")
SET(TOOLCHAIN_PATH "${CMAKE_CURRENT_SOURCE_DIR}/utils/toolchain/${TOOLCHAIN_PREFIX}")
SET(TOOLCHAIN_BIN_PATH "${TOOLCHAIN_PATH}/bin")
SET(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY)
SET(CMAKE_ASM_COMPILER "${TOOLCHAIN_BIN_PATH}/${TOOLCHAIN_PREFIX}-as")
SET(CMAKE_C_COMPILER "${TOOLCHAIN_BIN_PATH}/${TOOLCHAIN_PREFIX}-gcc")
SET(CMAKE_CXX_COMPILER "${TOOLCHAIN_BIN_PATH}/${TOOLCHAIN_PREFIX}-g++")
SET(CMAKE_LINKER "${TOOLCHAIN_BIN_PATH}/${TOOLCHAIN_PREFIX}-ld" CACHE INTERNAL "" )
SET(CMAKE_OBJCOPY "${TOOLCHAIN_BIN_PATH}/${TOOLCHAIN_PREFIX}-objcopy")
SET(CMAKE_SIZE "${TOOLCHAIN_BIN_PATH}/${TOOLCHAIN_PREFIX}-size")
SET(CMAKE_C_LINK_EXECUTABLE ${CMAKE_LINKER})
SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Map proj1.map -T proj1.ld")
Файл "start.s" успешно компилируется (этот файл содержит код запуска сборки для платформы), но не может связать его.Я исследовал его и обнаружил, что в «link.txt» внутри директории CMakeFiles есть следующая строка:
/home/root/proj1/utils/toolchain/arm-rookieboard-eabi/bin/arm-rookieboard-eabi-as CMakeFiles/proj1/boot/start.s.o -o proj1
, почему он снова обращается к AS, а не к LD?я что-то упустил?
Большое спасибо.