使用 cmake 在项目属性(eclipse)中添加定义

Add a definition in project properties (eclipse) with cmake

我正在使用 rapidjson,我想使用 std::string。然后我必须定义这个 -DRAPIDJSON_HAS_STDSTRING.

我的 CMakeLists.txt 现在有:

add_definitions(-DRAPIDJSON_HAS_STDSTRING)

它构建正常。

问题是在 Eclipse 中 CDT 我希望索引器识别该定义。然后它不会将某些功能标记为错误。

我如何用 CMakeLists.txt 做到这一点? 我没有运气就试过了:

set(CMAKE_CXX_COMPILER_ARG1 "-std=c++11 -DRAPIDJSON_HAS_STDSTRING=1" CACHE STRING "Compiler Args" FORCE)

由于 RapidJSON 是一个 header-only 库,您可以在包含 rapidjson headers.

之前定义您需要的宏

如果你的项目中没有这种全局配置header,你可以创建一个本地header像myrapidjson.h:

#pragma once
#define RAPIDJSON_HAS_STDSTRING 1
#include "rapidjson/rapidjson.h"
// other headers if you always need them

然后当您的 header/implementation 文件需要 rapidjson 时,只需首先包含此 header。