项目场景:
提示:这里简述项目相关背景:
MIMX8MM SDK编译hello_world应用有警告消息输出,本着追求0警告目标,想办法解决。
问题描述
提示:这里描述项目中遇到的问题:
用armgcc 编译SDK hello_world目录,出现警告消息,有多项,仅列举一项。
CMake Deprecation Warning at /usr/share/cmake-3.16/Modules/CMakeForceCompiler.cmake:75 (message):
The CMAKE_FORCE_C_COMPILER macro is deprecated. Instead just set
CMAKE_C_COMPILER and allow CMake to identify the compiler.
Call Stack (most recent call first):
原因分析:
提示:这里填写问题的分析:
CMAKE_FORCE_C_COMPILER
宏定义已经被弃用,只要用宏 CMAKE_C_COMPILER
给cmake识别编译器类型就行了。
解决方案:
提示:这里填写该问题的具体解决方案:
构建文件包含了cmake模块CMakeForceCompiler查看文件内容
cat /usr/share/cmake-3.16/Modules/CMakeForceCompiler.cmake
里面有提到cmake 3.6版本会弃用原有格式
CMAKE_FORCE_C_COMPILER(<compiler> <compiler-id>)
提示了警告并用新格式设置,我们只要在构建文件里面用新格式设置编译器及编译器ID就可以消除这个警告了。
macro(CMAKE_FORCE_C_COMPILER compiler id)
message(DEPRECATION "The CMAKE_FORCE_C_COMPILER macro is deprecated. "
"Instead just set CMAKE_C_COMPILER and allow CMake to identify the compiler.")
set(CMAKE_C_COMPILER "${compiler}")
set(CMAKE_C_COMPILER_ID_RUN TRUE)
set(CMAKE_C_COMPILER_ID ${id})
set(CMAKE_C_COMPILER_FORCED TRUE)
# Set old compiler id variables.
if(CMAKE_C_COMPILER_ID MATCHES "GNU")
set(CMAKE_COMPILER_IS_GNUCC 1)
endif()
endmacro()
修改后的构建文件armgcc.cmake,重新编译,无警告信息了。
# CMAKE_FORCE_C_COMPILER(${TOOLCHAIN_BIN_DIR}/${TARGET_TRIPLET}-gcc${TOOLCHAIN_EXT} GNU)
# CMAKE_FORCE_CXX_COMPILER(${TOOLCHAIN_BIN_DIR}/${TARGET_TRIPLET}-g++${TOOLCHAIN_EXT} GNU)
SET(CMAKE_ASM_COMPILER ${TOOLCHAIN_BIN_DIR}/${TARGET_TRIPLET}-gcc${TOOLCHAIN_EXT})
SET(id GNU)
SET(CMAKE_C_COMPILER "${TOOLCHAIN_BIN_DIR}/${TARGET_TRIPLET}-gcc${TOOLCHAIN_EXT}")
SET(CMAKE_C_COMPILER_ID_RUN TRUE)
SET(CMAKE_C_COMPILER_ID ${id})
SET(CMAKE_C_COMPILER_FORCED TRUE)
# Set old compiler id variables.
IF("${CMAKE_C_COMPILER_ID}" MATCHES "GNU")
SET(CMAKE_COMPILER_IS_GNUCC 1)
ENDIF()
SET(CMAKE_CXX_COMPILER "${TOOLCHAIN_BIN_DIR}/${TARGET_TRIPLET}-g++${TOOLCHAIN_EXT}")
SET(CMAKE_CXX_COMPILER_ID_RUN TRUE)
SET(CMAKE_CXX_COMPILER_ID ${id})
SET(CMAKE_CXX_COMPILER_FORCED TRUE)
# Set old compiler id variables.
IF("${CMAKE_CXX_COMPILER_ID}" MATCHES "GNU")
SET(CMAKE_COMPILER_IS_GNUCXX 1)
ENDIF()
还有提示没有设置源码路径,没有增加项目名的,那些提示明确,比较好解决,简单略过。
cmake -S ./ …
project(HELLO_WORLD)