【发布时间】:2015-11-04 23:33:12
【问题描述】:
我希望有以下结构A -> B -> C,其中:
-
C是样板代码,第三方库的包装器,非常 基本代码等 -
B是常用的类、函数和数据 特定于项目领域的结构。 -
A是项目本身。
我希望以后在我的其他项目中可以轻松地重用C 或B(+C)。另外,我还有以下要求:
- 由于所有三个项目都在进行中,我希望能够一次性构建
C、C+B和C+B+A。 - 我更喜欢静态链接而不是动态链接,这样
C和C+B将是静态库,C+B+A将是可执行文件 - 我想让 cmake 列表和配置文件保持简单和干净。我在官方 wiki 和 Internet 上找到的示例非常庞大和可怕。
- 如果我在文件系统中更改
A、B或C的位置,那么它不需要更改超过几行,那就太好了。 - 这三个组件都在使用 google-test,但我不确定它对项目布局是否重要。
我对 cmake 还是很陌生,我什至不明白写 XXXConfig.cmake 或 FindXXX.cmake 文件更好。另外,我不确定,我应该如何使用X_INCLUDE_DIRS 将子组件的相对路径传递给父组件。
【问题讨论】:
-
项目布局主要由作者决定。您的每个要求都有许多可能的决定,而不仅仅是来自 cmake 方面。例如,在其他项目中重用
C可能是版本控制系统的任务。由于您是 cmake 的新手,因此您最好从 任何简单的布局开始,只是为了 使项目正常工作。 -
@Tsyvarev 项目已经在运行,但是通过我所做的简单 cmake 配置,它非常单一。如果实现目标有很多选择,那么哪个选择是最好的?如果问题中的信息不够,还有什么附加条件?
-
没有“最佳选择”。有许多“附加条件”可能会影响不同决策的“好”顺序。其中一些条件,例如您的 3d 条件,是主观的。您的问题可能有助于收集关于可能布局的不同意见,但 SO 网站属于 问答 类型,此类问题根本不适合它。