【发布时间】:2012-03-29 02:47:06
【问题描述】:
我正在重构一个独立于平台的大型 c++ 框架,这样它的库和可执行文件就不必再位于同一目录(甚至存储库)中,这被证明是相当具有挑战性的。该框架目前仅由我使用,它现在应该适用于我们整个工作组,因此我必须使其尽可能模块化和自动化。
我的基本结构是这样的
- 应用程序/
- app1,app2,...
- 库/
- 核心、lib1、lib2、...
- 斌:
- app1、app2、libcore、liblib1、liblib2、...(在 NIX 上)
- app1.exe、app2.exe、core.dll、lib1.dll、lib2.dll、...(在 Windows 上)
应用程序依赖于libs,所有的libs都依赖于core lib。这一切都可以在同一个根目录和 add_subdirectory 机制中正常工作。
项目依赖项按我调用 add_subdirectory 的顺序处理:首先是 libs(核心是第一个),然后是 apps。 Cmake 非常友好地将 ${core_SOURCE_IR} 设置为相应的目录,并且所有二进制文件(库和应用程序)都在同一目录中生成。
我需要的建议是:
- 我是否应该转向基于 find_package 的方法(为每个 lib 和 FindLib.cmake 文件编写)
- apps 和 libs 如何找到彼此
- 存放二进制文件的位置
- 如何传递依赖目标的包含目录
- ExternalProject_Add ?
谢谢
【问题讨论】:
标签: c++ cross-platform build-process cmake modularity