通过 Cmake 添加 #define 在编译时不起作用

发布于 2025-01-10 07:10:16 字数 915 浏览 0 评论 0原文

我有一个具有以下结构的文件 a.hpp:

#ifndef HEADER
#define HEADER

#ifdef FLAG
namespace Foo {
   void somefunc();
}
#endif // FLAG

#endif // HEADER

我想将该文件包含在另一个文件 b.hpp 中,并且不提供 #define FLAG 在该文件中,而是使用 Cmake 文件提供它。

a.hpp 文件是名为 Utils 的外部库的一部分,并通过ExternalProject_Add 命令添加,如下所示:

target_link_libraries(Proj Proj/Lib/LibUtils.a)
ExternalProject_Add(Utils
   GIT_REPOSITORY http://somerepo
   GIT_TAG master
   CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=Proj/Lib -DFLAG
)
ExternalProject_Get_Property (Utils SOURCE_DIR)
target_include_directories(Proj PRIVATE ${SOURCE_DIR}/Inc)

在 Utils 的 Cmake 文件中,出现以下代码段:

if (DEFINED FLAG)
   add_compile_options(-DFLAG)
endif(DEFINED FLAG)

我尝试将 -DFLAG 添加到 cmake args (如上所示), 我尝试将 add_definitions、target_compile_definitions、add_compile_definitions 添加到 a.hpp Cmake 文件的顶部,但我仍然得到“someFunc”不是“Foo”的成员。

I have a certain file, a.hpp, of the following structure:

#ifndef HEADER
#define HEADER

#ifdef FLAG
namespace Foo {
   void somefunc();
}
#endif // FLAG

#endif // HEADER

I would like to include the file in another file, b.hpp, and not provide the #define FLAG
in that file, but rather provide it using the Cmake file.

the a.hpp file is a part of an external library called Utils, and is added via an ExternalProject_Add command like this:

target_link_libraries(Proj Proj/Lib/LibUtils.a)
ExternalProject_Add(Utils
   GIT_REPOSITORY http://somerepo
   GIT_TAG master
   CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=Proj/Lib -DFLAG
)
ExternalProject_Get_Property (Utils SOURCE_DIR)
target_include_directories(Proj PRIVATE ${SOURCE_DIR}/Inc)

in the Utils' Cmake file the following piece of code appears:

if (DEFINED FLAG)
   add_compile_options(-DFLAG)
endif(DEFINED FLAG)

I've tried adding the -DFLAG to the cmake args (as seen above),
i've tried adding add_definitions, target_compile_definitions, add_compile_definitions to the top of the a.hpp Cmake File but i still get a 'someFunc' is not a member of 'Foo'.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文