在const int上定义,但将值放在已安装的头文件中

Dir*_*ers 3 c++ cmake

我有一个C++库,可以完成一些数值工作.主要参数是段数.对于速度来说,重要的是段数为3的因素const,但是我想在编译时使用它来定义它-DSEGMENTS 32.标题看起来像这样:

#ifdef SEGMENTS
const int segments = SEGMENTS
#else
const int segments = 20
#endif
Run Code Online (Sandbox Code Playgroud)

这样可行.但是,与这个库连接的程序没有得到-DSEGMENTS,因此segments总是20.没有const我知道解决方案,但我不知道.extern如果可以使用cmake,我可以想象一些技巧或在预编译后安装标头.

Kla*_*äck 5

如果您希望其他库从外部获取值,您应该在标头中将其声明为external:

extern const int segments;
Run Code Online (Sandbox Code Playgroud)

您可以像上面描述的那样在一个代码文件(.cpp)中定义它:

#ifdef SEGMENTS
const int segments = SEGMENTS
#else
const int segments = 20
#endif
Run Code Online (Sandbox Code Playgroud)