通过 Cmake 添加 #define 在编译时不起作用
我有一个具有以下结构的文件 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论