Как добавить определение препроцессора в сборку CMAKE projet от Yocto

Я работаю над существующим проектом, который использует CMake для настройки и генерации.
Цель — устройство ARM, поэтому я собираю всю систему с помощью Yocto / OpenEmbedded.

Мне удается создать рецепт для создания проекта cmake.
Это выглядит так:

DESCRIPTION = "FANN LIB"
LICENSE = "CLOSED"
inherit cmake

SRCREV = "${AUTOREV}"
PV = "1.0"
SRC_URI = "git://github.com/libfann/fann.git;branch=master;protocol=git"
S = "${WORKDIR}/git"BBCLASSEXTEND = "native"
FILES_${PN} += "/usr/lib/cmake/"

В коде есть «#ifdef DEBUG», который я хотел бы активировать. Поэтому я хотел бы добавить DEBUG в флаги C / C ++.

Я обнаружил, что могу использовать

EXTRA_OECMAKE += "CXXFLAGS='-DDEBUG'"EXTRA_OECMAKE = "set(CMAKE_CXX_FLAGS "-DDEBUG")"

Но стенд заменит все CFlags и это не то, что я хочу (плюс это сломало компиляцию!)

Я просто хотел бы, чтобы при вызове компилятора был добавлен taht -DDEBUG! 🙂

Как добавить определение препроцессора в проект на основе CMake по рецепту Yocto?

0

Решение

Я использую это назначение для целевой сборки в моих файлах рецептов (также основанных на cmake):

# This flag is also propagated to CXXFLAGS
TARGET_CFLAGS += "-DSOME_FLAG"

Я не уверен, почему CFLAGS распространяется на CXXFLAGS, так что вы также можете попробовать TARGET_CXXFLAGS переменная в OpenEmbeedded. Увидеть Yocto Mega Manual.

Обратите внимание, что это добавит флаги только для целевой сборки (то есть результат будет использоваться только для цели). Я вижу, что вы также строите нативный вариант, поэтому BUILD_CXXFLAGS может быть полезным Существует также BUILDSDK_CXXFLAGS для варианта nativesdk (это не ваш случай). Эти переменные четко описаны в руководство в описании переменной CXXFLAGS.

Кстати, одна вещь, которая связана с CMake: если вы используете set(CMAKE_CXX_FLAGS "-DDEBUG") в вашем CMakeLists.txt вам нужно повторить CMAKE_CXX_FLAGS с правой стороны, т.е. set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DDEBUG")иначе ваши флаги будут перезаписаны. Посмотри пожалуйста этот блог для дополнительной информации.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]