我正在处理一个已存在的项目,该项目使用CMake进行配置和生成。
目标是一个ARM设备,所以我使用Yocto/OpenEmbedded构建整个系统。
我成功地创建了一个配方来构建cmake项目。 它看起来像这样:
在代码中有一个"#ifdef DEBUG",我想要激活它。所以我想要将DEBUG添加到C/C++标志中。
我发现我可以使用
但是两者都替换了所有的CFlags,这不是我想要的(而且还导致编译出错!)
我只希望在调用编译器时添加-DDEBUG! :-)
在一个基于CMake的项目中,在Yocto配方中如何添加预处理定义?
我成功地创建了一个配方来构建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,这不是我想要的(而且还导致编译出错!)
我只希望在调用编译器时添加-DDEBUG! :-)
在一个基于CMake的项目中,在Yocto配方中如何添加预处理定义?
CMakeLists.txt
中“内部”添加标志。而当前的问题是关于在Yocto中“外部”添加标志,这是完全不同的事情。 - TsyvarevCMakeLists.txt
(“内部”)的方式。但是这个注意事项对于外部方式的工作非常重要:如果项目重写编译器标志(CMAKE_CXX_FLAGS
),那么所有的“外部”设置都将丢失。因此,项目的正确方式是追加标志。 - Tsyvarev