我有一个父包,它实现了一个“goody”类并具有以下结构:
parent/include/goody.h
parent/src/goody.cpp
这个包被几个具有结构的子包 child_1 到 child_n 使用
child_i/include/child_details.h
child_i/src/main.cpp
其中 main.cpp 使用“goody”。重要的部分是 child_details.h 向父级提供了实现“goody”所需的信息。goody.h 看起来像:
#include "child_details.h"
class goody
{
double arr_[child_details::num_elements];
}
其中“num_elements”是一个常量,需要在编译时知道。
现在,我知道模板将是解决此类问题的正确构造,但是(a)我不想在每个 child_i 包中添加专业化,并且(b)“num_elements”在父包中到处都是并且需要很多模板特定的代码,我想避免。
因此,我的问题是:用 CMake 组织我的包的干净方法是什么?我无法在父级内部编译父级包,因为每个子级都会有一个“goody”实例。另一方面,我想避免在父级内部编译所有这些实例,因为父级不应该知道子级。我可以在父包中生成类似未编译对象的东西,然后必须在每个子包中编译它吗?