【发布时间】:2010-08-07 16:46:52
【问题描述】:
我正在开发一个跨平台项目,该项目使用大量第三方库(目前有 22 个并且还在增加,我预计这个数字会显着增加)。我的项目是基于 CMake 的,并保持 ThirdParty/ 目录的组织方式如下:
第三方/$libname/include/
第三方/$libname/lib/$platform/$buildtype/
我的 CMakeLists.txt 具有确定 $platform(mac-i386、mac-ia64、win32-i386 等)和 $buildtype(调试/发布)的适当值的逻辑。
在为每个平台保持这些库是最新的方面出现了困难。目前我正在手动执行此操作 - 当我更新一个库时,我会为每个平台重建它。但这是一场噩梦,添加新平台需要两天时间。
如果第三方库本身是基于 CMake 的,这将很容易实现自动化,但它们使用从 CMake 到 autoconf 到自定义解决方案再到手动生成文件的所有内容。它们之间没有一致性,并且都需要在构建平台方面跳过各种箍(尤其是在 32 位和 64 位构建方面)。
是否有任何工具(或 CMake 扩展)可以使其更易于管理?例如,CMake 和 autoconf 之间是否有任何合理的共同点?
理想的解决方案会给我一个命令来构建需要为给定平台重建的所有内容(不需要交叉编译,因为我可以访问所有必要的平台),但是任何让我的生活更轻松的东西都是赞赏。
【问题讨论】:
标签: build build-process compilation cmake autoconf