Eclipse с cmake4eclipse: редактор не распознает символы, определенные в CMakeLists.txt

  • Windows 10 версии 1809
  • Eclipse IDE для разработчиков C/C++ (Версия: 2019-06 (4.12.0))
  • cmake4eclipse 2.1.1
  • cmake версия 3.17.0
  • GNU Make 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
)

связанная тема cmake4eclipse

1 ответ

Решение

Индексатор был настроен на "Использовать фиксированную конфигурацию сборки". Вот почему я мог создавать разные конфигурации, но редактор всегда показывал значения флагов моей указанной конфигурации (= отладка).

Должна быть возможность использовать настройки индексатора для конкретного проекта (PS), но...

В Eclipse есть ошибка, которая приводит к неинтуитивному поведению индексатора (см. Bug205299):

WS: Окно> Настройки> 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 распознал символы.

Другие вопросы по тегам