使用 cmake4eclipse 的 Eclipse:编辑器无法识别 CMakeLists.txt 中定义的符号
Eclipse with cmake4eclipse: Editor does not recognize symbols defined in CMakeLists.txt
- Windows10 版本 1809
- 面向 C/C++ 开发人员的 Eclipse IDE(版本:2019-06 (4.12.0))
- cmake4eclipse 2.1.1
- cmake 版本 3.17.0
- GNU 制作 4.2.1
一个简单示例项目的存储库:https://bitbucket.org/ChristianW/cmake_driven_example_arm-none-eabi-gcc/src/master/
当使用 arm-none-eabi-gcc 编译器时,Eclipse C/C++ 编辑器无法识别我在 CMakeLists.txt 中设置的符号。
...
if(1)
set(CMAKE_C_COMPILER arm-none-eabi-gcc)
else()
set(CMAKE_C_COMPILER gcc)
endif()
...
当使用 gcc 编译器时,Eclipse C/C++ 编辑器确实识别我在 CMakeLists.txt.
中设置的符号
...
if(0)
set(CMAKE_C_COMPILER arm-none-eabi-gcc)
else()
set(CMAKE_C_COMPILER gcc)
endif()
...
在这两种情况下,构建项目都是可行的。
有什么想法吗?
亲切的问候,
克里斯蒂安
编辑:CMakeLists.txt
的内容
cmake_minimum_required(VERSION 3.10)
#set(CMAKE_MAKE_PROGRAM "C:/Program Files/mingw-w64/x86_64-8.1.0-posix-seh-rt_v6-rev0/mingw64/bin/mingw32-make.exe")
set(CMAKE_MAKE_PROGRAM "C:/Program Files (x86)/mingw-w64/i686-8.1.0-posix-dwarf-rt_v6-rev0/mingw32/bin/mingw32-make.exe")
#set(CMAKE_MAKE_PROGRAM "C:/Tools/ON Semiconductor/RSL10_IDE_3_3/IDE_V3.2.2.13/arm_tools/bin/make.exe")
set(CMAKE_SYSTEM_NAME Generic)
set(CMAKE_SYSTEM_PROCESSOR arm)
set(CMAKE_CROSSCOMPILING 1)
set(CMAKE_TRY_COMPILE_TARGET_TYPE "STATIC_LIBRARY")
set(CMAKE_C_OBJCOPY arm-none-eabi-objcopy)
if(1)
set(CMAKE_C_COMPILER arm-none-eabi-gcc)
else()
set(CMAKE_C_COMPILER gcc)
endif()
project(cmake_driven_example_arm-none-eabi-gcc C)
set(SOURCES
main.c
modules/math/math.c
)
include_directories(
modules/math
)
set(CMAKE_C_FLAGS "-DINCLUDE_MATH")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DMYVAR=5")
# Invoking: Cross ARM C Linker
set(CMAKE_EXE_LINKER_FLAGS "-Xlinker --gc-sections")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -T\"${CMAKE_SOURCE_DIR}/sdk_packages/rsl10_sdk/source/firmware/cmsis/source/GCC/sections_modified.ld\"")
# build elf file
add_executable(${PROJECT_NAME} ${SOURCES})
target_link_libraries(${PROJECT_NAME}
${CMAKE_SOURCE_DIR}/sdk_packages/rsl10_sdk/lib/ble_core/Release/libblelib.a
${CMAKE_SOURCE_DIR}/sdk_packages/rsl10_sdk/lib/ble_core/Release/libkelib.a
)
索引器设置为“使用固定构建配置”。
这就是为什么我可以构建不同的配置,但编辑器总是显示我指定配置的标志值 (=Debug)。
应该可以使用项目特定 (PS) 索引器设置,但是...
Eclipse 中存在导致索引器行为不直观的错误 (see bug205299):
WS: Window > 首选项 > C/C++ > 索引器 > 索引器的构建配置:使用项目索引器设置中指定的构建配置
PS:项目属性 > C/C++ 常规 > 索引器 > 用户活动构建配置
解决方案:使用工作区特定 (WS) 索引器设置:使用活动构建配置
可能还有编译器路径问题:
“...\IDE_V3.2.2.13\arm_tools\bin\arm-none-eabi-gcc.exe”
-> 文件夹名称中的点 IDE_V3.2.2.13
它给了我这些警告:(仅供参考:在示例项目中我没有定义入口符号 Reset_Handler)
随着移动 arm_tools 文件夹,Eclipse 编辑器识别了这些符号。
- Windows10 版本 1809
- 面向 C/C++ 开发人员的 Eclipse IDE(版本:2019-06 (4.12.0))
- cmake4eclipse 2.1.1
- cmake 版本 3.17.0
- GNU 制作 4.2.1
一个简单示例项目的存储库:https://bitbucket.org/ChristianW/cmake_driven_example_arm-none-eabi-gcc/src/master/
当使用 arm-none-eabi-gcc 编译器时,Eclipse C/C++ 编辑器无法识别我在 CMakeLists.txt 中设置的符号。
...
if(1)
set(CMAKE_C_COMPILER arm-none-eabi-gcc)
else()
set(CMAKE_C_COMPILER gcc)
endif()
...
当使用 gcc 编译器时,Eclipse C/C++ 编辑器确实识别我在 CMakeLists.txt.
中设置的符号...
if(0)
set(CMAKE_C_COMPILER arm-none-eabi-gcc)
else()
set(CMAKE_C_COMPILER gcc)
endif()
...
在这两种情况下,构建项目都是可行的。 有什么想法吗?
亲切的问候, 克里斯蒂安
编辑:CMakeLists.txt
的内容cmake_minimum_required(VERSION 3.10)
#set(CMAKE_MAKE_PROGRAM "C:/Program Files/mingw-w64/x86_64-8.1.0-posix-seh-rt_v6-rev0/mingw64/bin/mingw32-make.exe")
set(CMAKE_MAKE_PROGRAM "C:/Program Files (x86)/mingw-w64/i686-8.1.0-posix-dwarf-rt_v6-rev0/mingw32/bin/mingw32-make.exe")
#set(CMAKE_MAKE_PROGRAM "C:/Tools/ON Semiconductor/RSL10_IDE_3_3/IDE_V3.2.2.13/arm_tools/bin/make.exe")
set(CMAKE_SYSTEM_NAME Generic)
set(CMAKE_SYSTEM_PROCESSOR arm)
set(CMAKE_CROSSCOMPILING 1)
set(CMAKE_TRY_COMPILE_TARGET_TYPE "STATIC_LIBRARY")
set(CMAKE_C_OBJCOPY arm-none-eabi-objcopy)
if(1)
set(CMAKE_C_COMPILER arm-none-eabi-gcc)
else()
set(CMAKE_C_COMPILER gcc)
endif()
project(cmake_driven_example_arm-none-eabi-gcc C)
set(SOURCES
main.c
modules/math/math.c
)
include_directories(
modules/math
)
set(CMAKE_C_FLAGS "-DINCLUDE_MATH")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DMYVAR=5")
# Invoking: Cross ARM C Linker
set(CMAKE_EXE_LINKER_FLAGS "-Xlinker --gc-sections")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -T\"${CMAKE_SOURCE_DIR}/sdk_packages/rsl10_sdk/source/firmware/cmsis/source/GCC/sections_modified.ld\"")
# build elf file
add_executable(${PROJECT_NAME} ${SOURCES})
target_link_libraries(${PROJECT_NAME}
${CMAKE_SOURCE_DIR}/sdk_packages/rsl10_sdk/lib/ble_core/Release/libblelib.a
${CMAKE_SOURCE_DIR}/sdk_packages/rsl10_sdk/lib/ble_core/Release/libkelib.a
)
索引器设置为“使用固定构建配置”。 这就是为什么我可以构建不同的配置,但编辑器总是显示我指定配置的标志值 (=Debug)。
应该可以使用项目特定 (PS) 索引器设置,但是...
Eclipse 中存在导致索引器行为不直观的错误 (see bug205299):
WS: Window > 首选项 > C/C++ > 索引器 > 索引器的构建配置:使用项目索引器设置中指定的构建配置
PS:项目属性 > C/C++ 常规 > 索引器 > 用户活动构建配置
解决方案:使用工作区特定 (WS) 索引器设置:使用活动构建配置
可能还有编译器路径问题: “...\IDE_V3.2.2.13\arm_tools\bin\arm-none-eabi-gcc.exe” -> 文件夹名称中的点 IDE_V3.2.2.13
它给了我这些警告:(仅供参考:在示例项目中我没有定义入口符号 Reset_Handler)
随着移动 arm_tools 文件夹,Eclipse 编辑器识别了这些符号。