Я работаю над существующим проектом, который использует 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?
Я использую это назначение для целевой сборки в моих файлах рецептов (также основанных на 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")
иначе ваши флаги будут перезаписаны. Посмотри пожалуйста этот блог для дополнительной информации.
Других решений пока нет …