如何在 Yocto 构建的 CMAKE projet 中添加预处理器定义
How to add preprocessor definition in CMAKE projet build by 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++ Flags.
我发现我可以使用
EXTRA_OECMAKE += "CXXFLAGS='-DDEBUG'"
EXTRA_OECMAKE = "set(CMAKE_CXX_FLAGS "-DDEBUG")"
但是 booth 替换了所有 CFlag,这不是我想要的(而且它破坏了编译!)
我只想在调用编译器时添加-DDEBUG! :-)
如何在 Yocto 配方中的基于 CMake 的项目中添加预处理器定义?
我将此分配用于我的配方文件中的目标构建(也基于 cmake):
# This flag is also propagated to CXXFLAGS
TARGET_CFLAGS += "-DSOME_FLAG"
我不确定为什么 CFLAGS 会传播到 CXXFLAGS,因此您也可以在 OpenEmbeedded 中尝试 TARGET_CXXFLAGS
变量。参见 Yocto mega manual。
请注意,这只会为目标构建添加标志(即结果只会在目标上使用)。我看到您也在构建本机变体,因此 BUILD_CXXFLAGS
可能会有所帮助。 nativesdk 变体也有 BUILDSDK_CXXFLAGS
(这不是你的情况)。 the manual in the CXXFLAGS variable description.
中清楚地描述了这些变量
顺便提一下,与 CMake 相关的一件事:如果您在 CMakeLists.txt 中使用 set(CMAKE_CXX_FLAGS "-DDEBUG")
,则需要在右侧重复 CMAKE_CXX_FLAGS,即 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DDEBUG")
,否则你的标志将被覆盖。请参阅 this blog 了解更多信息。
我正在开发一个使用 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++ Flags.
我发现我可以使用
EXTRA_OECMAKE += "CXXFLAGS='-DDEBUG'"
EXTRA_OECMAKE = "set(CMAKE_CXX_FLAGS "-DDEBUG")"
但是 booth 替换了所有 CFlag,这不是我想要的(而且它破坏了编译!)
我只想在调用编译器时添加-DDEBUG! :-)
如何在 Yocto 配方中的基于 CMake 的项目中添加预处理器定义?
我将此分配用于我的配方文件中的目标构建(也基于 cmake):
# This flag is also propagated to CXXFLAGS
TARGET_CFLAGS += "-DSOME_FLAG"
我不确定为什么 CFLAGS 会传播到 CXXFLAGS,因此您也可以在 OpenEmbeedded 中尝试 TARGET_CXXFLAGS
变量。参见 Yocto mega manual。
请注意,这只会为目标构建添加标志(即结果只会在目标上使用)。我看到您也在构建本机变体,因此 BUILD_CXXFLAGS
可能会有所帮助。 nativesdk 变体也有 BUILDSDK_CXXFLAGS
(这不是你的情况)。 the manual in the CXXFLAGS variable description.
顺便提一下,与 CMake 相关的一件事:如果您在 CMakeLists.txt 中使用 set(CMAKE_CXX_FLAGS "-DDEBUG")
,则需要在右侧重复 CMAKE_CXX_FLAGS,即 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DDEBUG")
,否则你的标志将被覆盖。请参阅 this blog 了解更多信息。