如何在Yocto构建的CMAKE项目中添加预处理器定义



我正在研究一个使用cmake进行配置和生成的现有项目。目标是一种手臂设备,因此我使用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"。我想激活。因此,我想将调试添加到C/C 标志。

我发现我可以使用

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

,但两者都取代了所有cflags,这不是我想要的(加上汇编!)

我只想添加拨打编译器时添加-ddebug!: - )

如何在yocto食谱中的基于CMAKE的项目中添加预处理器定义?

我正在使用此分配用于我的食谱文件中的目标构建(也基于cmake):

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

我不确定为什么CFLAG传播到CXXFLAGS,因此您也可以在OpenEmbeedd中尝试TARGET_CXXFLAGS变量。请参阅Yocto Mega手册。

请注意,这仅为目标构建添加标志(即结果仅在目标上使用)。我看到您也正在构建本地变体,因此BUILD_CXXFLAGS可能会有所帮助。NativeDK变体也有BUILDSDK_CXXFLAGS(这不是您的情况)。这些变量在CXXFLAGS变量描述中的手册中清楚地描述了。

顺便说一句,与cmake相关的一件事是:如果您在cmakelists.txt中使用 set(CMAKE_CXX_FLAGS "-DDEBUG"),则需要在右侧重复cmake_cxx_flags,即 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DDEBUG"),否则您的标志将被覆盖。请参阅此博客以获取更多信息。

最新更新