无法使用CMakelists创建十六进制小精灵文件
我正在尝试使用CMakelists使用IAR文件为我的眨眼项目创建一个十六进制和精灵文件。
汇编与CMAKE没有错误,但我看不到构建文件夹中的文件。 我的目标是创建一个十六进制和小精灵文件,以供以后闪烁。
有人可以告诉我我应该修改什么来解决这个问题吗? 非常感谢
Cmakelists:
cmake_minimum_required(VERSION 3.7.2)
######################################################################
#
# Project
#
######################################################################
project(blink_cortex_m0plus)
enable_language(ASM)
######################################################################
#
# CPP Definitions
#
######################################################################
set(PROJECT_FLAGS_ARCH
"-mcpu=cortex-m0plus \
-mthumb"
)
set(PROJECT_LINKER_FLAGS
"-Wl,-Map=${PROJECT_NAME}.map \
-L${PROJECT_SOURCE_DIR}/../config/ \
-Tlinker.ld"
)
set(PROJECT_C_FLAGS_WARNINGS "${COMMON_FLAGS_WARNINGS} ${C_FLAGS_WARNINGS_EXTRA}")
######################################################################
#
# Sources
#
######################################################################
set(PROJECT_INCLUDE_DIRS
${PROJECT_CONFIG_DIR}
${BLINK_DIR}/../
${CYPRESS_CORE_LIBRARY}
)
set(PROJECT_SRCS
${PROJECT_SOURCE_DIR}/main_cm0plus.c
${CYPRESS_PERIPHERAL_DRIVERS_LIBRARY}system_tviibe1m_cm0plus.c
${CYPRESS_PERIPHERAL_DRIVERS_LIBRARY}startup_cm0plus.S
)
######################################################################
#
# TARGET
#
######################################################################
set (CMAKE_C_FLAGS "${C_FLAGS} ${C_FLAGS_WARNINGS} ${FLAGS_OPTIMIZATION} ${PROJECT_FLAGS_ARCH}")
set (CMAKE_ASM_FLAGS "${C_FLAGS} ${C_FLAGS_WARNINGS} ${FLAGS_OPTIMIZATION} ${PROJECT_FLAGS_ARCH}")
#set (CMAKE_CXX_FLAGS "${CXX_FLAGS} ${CXX_FLAGS_WARNINGS} ${FLAGS_OPTIMIZATION} ${PROJECT_FLAGS_ARCH}")
set (CMAKE_EXE_LINKER_FLAGS "${LINKER_FLAGS} ${PROJECT_LINKER_FLAGS} ${FLAGS_OPTIMIZATION} ${PROJECT_FLAGS_ARCH}")
set(CMAKE_C_COMPILER arm-none-eabi-gcc)
set(OBJCOPY arm-none-eabi-objcopy)
set(CMAKE_SYSTEM_NAME Generic)
set(CMAKE_SYSTEM_VERSION 1)
include_directories(
${PROJECT_INCLUDE_DIRS}
${CYPRESS_PERIPHERAL_DRIVERS_LIBRARY_INCLUDE_DIRS}
# )
add_executable(${PROJECT_NAME}.elf ${PROJECT_SRCS} ${CYPRESS_PERIPHERAL_DRIVERS_LIBRARY_SRCS})
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,-Map=${PROJECT_SOURCE_DIR}/build/${PROJECT_NAME}.map")
set(HEX_FILE ${PROJECT_SOURCE_DIR}/build/${PROJECT_NAME}.hex)
set(BIN_FILE ${PROJECT_SOURCE_DIR}/build/${PROJECT_NAME}.bin)
add_custom_command(TARGET ${PROJECT_NAME}.elf POST_BUILD
COMMAND ${OBJCOPY} -Oihex $<TARGET_FILE:${PROJECT_NAME}.elf> ${HEX_FILE}
COMMAND ${OBJCOPY} -Obinary $<TARGET_FILE:${PROJECT_NAME}.elf> ${BIN_FILE}
COMMENT "Building ${HEX_FILE} \nBuilding ${BIN_FILE}")
I am trying to use cmakelists to create a hex and elf file for my blinkled project, using IAR files.
The compilation is without errors with cmake but I dont see the files in the build folder.
my goal is to create a hex and elf files for flashing pursoses later on.
Can someone please tell me what I should modify to solve this problem?
thanks a lot
cmakelists:
cmake_minimum_required(VERSION 3.7.2)
######################################################################
#
# Project
#
######################################################################
project(blink_cortex_m0plus)
enable_language(ASM)
######################################################################
#
# CPP Definitions
#
######################################################################
set(PROJECT_FLAGS_ARCH
"-mcpu=cortex-m0plus \
-mthumb"
)
set(PROJECT_LINKER_FLAGS
"-Wl,-Map=${PROJECT_NAME}.map \
-L${PROJECT_SOURCE_DIR}/../config/ \
-Tlinker.ld"
)
set(PROJECT_C_FLAGS_WARNINGS "${COMMON_FLAGS_WARNINGS} ${C_FLAGS_WARNINGS_EXTRA}")
######################################################################
#
# Sources
#
######################################################################
set(PROJECT_INCLUDE_DIRS
${PROJECT_CONFIG_DIR}
${BLINK_DIR}/../
${CYPRESS_CORE_LIBRARY}
)
set(PROJECT_SRCS
${PROJECT_SOURCE_DIR}/main_cm0plus.c
${CYPRESS_PERIPHERAL_DRIVERS_LIBRARY}system_tviibe1m_cm0plus.c
${CYPRESS_PERIPHERAL_DRIVERS_LIBRARY}startup_cm0plus.S
)
######################################################################
#
# TARGET
#
######################################################################
set (CMAKE_C_FLAGS "${C_FLAGS} ${C_FLAGS_WARNINGS} ${FLAGS_OPTIMIZATION} ${PROJECT_FLAGS_ARCH}")
set (CMAKE_ASM_FLAGS "${C_FLAGS} ${C_FLAGS_WARNINGS} ${FLAGS_OPTIMIZATION} ${PROJECT_FLAGS_ARCH}")
#set (CMAKE_CXX_FLAGS "${CXX_FLAGS} ${CXX_FLAGS_WARNINGS} ${FLAGS_OPTIMIZATION} ${PROJECT_FLAGS_ARCH}")
set (CMAKE_EXE_LINKER_FLAGS "${LINKER_FLAGS} ${PROJECT_LINKER_FLAGS} ${FLAGS_OPTIMIZATION} ${PROJECT_FLAGS_ARCH}")
set(CMAKE_C_COMPILER arm-none-eabi-gcc)
set(OBJCOPY arm-none-eabi-objcopy)
set(CMAKE_SYSTEM_NAME Generic)
set(CMAKE_SYSTEM_VERSION 1)
include_directories(
${PROJECT_INCLUDE_DIRS}
${CYPRESS_PERIPHERAL_DRIVERS_LIBRARY_INCLUDE_DIRS}
# )
add_executable(${PROJECT_NAME}.elf ${PROJECT_SRCS} ${CYPRESS_PERIPHERAL_DRIVERS_LIBRARY_SRCS})
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,-Map=${PROJECT_SOURCE_DIR}/build/${PROJECT_NAME}.map")
set(HEX_FILE ${PROJECT_SOURCE_DIR}/build/${PROJECT_NAME}.hex)
set(BIN_FILE ${PROJECT_SOURCE_DIR}/build/${PROJECT_NAME}.bin)
add_custom_command(TARGET ${PROJECT_NAME}.elf POST_BUILD
COMMAND ${OBJCOPY} -Oihex lt;TARGET_FILE:${PROJECT_NAME}.elf> ${HEX_FILE}
COMMAND ${OBJCOPY} -Obinary lt;TARGET_FILE:${PROJECT_NAME}.elf> ${BIN_FILE}
COMMENT "Building ${HEX_FILE} \nBuilding ${BIN_FILE}")
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我使用以下命令转换为.bin和.hex:
一个值得注意的区别是
args
,如下所示: https ://stackoverflow.com/a/53573133I convert to .bin and .hex it with the following command:
One notable difference is the
ARGS
as suggested here: https://stackoverflow.com/a/53573133