generated from hulk/gd32f4xx_template_cmake_vscode
CMake: support older ARM linker versions
This commit is contained in:
+16
-2
@@ -88,11 +88,25 @@ target_link_options(${PROJECT_NAME} PRIVATE
|
||||
# 容量宏(代码中如需按容量分支使用 GD32_FLASH_SIZE_KB)
|
||||
target_compile_definitions(${PROJECT_NAME} PRIVATE GD32_FLASH_SIZE_KB=${GD32_FLASH_SIZE_KB})
|
||||
|
||||
# 生成 map 文件等
|
||||
# 生成 map 文件等。`--no-warn-rwx-segments` 仅用于抑制新版本
|
||||
# binutils 的 RWX 段警告,旧版(例如 xPack GCC 11.3 搭配 binutils 2.38)
|
||||
# 不认识该选项,因此先探测链接器能力,避免因工具链版本差异导致链接失败。
|
||||
target_link_options(${PROJECT_NAME} PRIVATE
|
||||
-Wl,-Map=${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/Application.map
|
||||
-Wl,--no-warn-rwx-segments
|
||||
)
|
||||
execute_process(
|
||||
COMMAND "${CMAKE_LINKER}" --help
|
||||
OUTPUT_VARIABLE FILMFORGE_LINKER_HELP
|
||||
ERROR_VARIABLE FILMFORGE_LINKER_HELP_ERROR
|
||||
RESULT_VARIABLE FILMFORGE_LINKER_HELP_RESULT
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||
)
|
||||
if(FILMFORGE_LINKER_HELP_RESULT EQUAL 0 AND
|
||||
FILMFORGE_LINKER_HELP MATCHES "no-warn-rwx-segments")
|
||||
target_link_options(${PROJECT_NAME} PRIVATE -Wl,--no-warn-rwx-segments)
|
||||
else()
|
||||
message(STATUS "Linker does not support --no-warn-rwx-segments; skipping it")
|
||||
endif()
|
||||
|
||||
# 链接SDK库
|
||||
target_link_libraries(${PROJECT_NAME} PRIVATE CMSIS)
|
||||
|
||||
Reference in New Issue
Block a user