我正在研究一个使用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")
,否则您的标志将被覆盖。请参阅此博客以获取更多信息。