Occa: cmake 支持

创建于 2018-10-08  ·  11评论  ·  资料来源: libocca/occa

嗨,OCCA 人,

有没有计划让 cmake 生成构建系统?
我们所有的科学计算软件都使用它。 这需要付出很大的努力,但一旦完成就会得到回报。

最好的,

阿米克

question help wanted

所有11条评论

我的2美分...

我使用的许多软件包(例如,VTK)都是使用 cmake 配置和构建的,但我不喜欢它。 对于 cmake 语言和必须编写的代码而言,与其说是太多,不如说是对于它生成的非常模糊的 makefile“组件”,它生成一个深层次和混淆的目录结构。 因此,找出 cmake 失败的原因,或者为什么编译不正确,或者如何调整构建,可能是一项不平凡的工作(至少对我而言)。

根据配置规范为当前构建环境生成一个生成文件通常是一件好事,但是无论生成器是什么,恕我直言,如果生成器只生成一个单一的、扁平的、简单的、可读的并且可能可以调整的生成文件(比如古老的 'configure ' 做)。 那肯定不是cmake!

嗨,保罗,

我不喜欢它,但一旦安装在一个项目中,它就非常可靠。 它的主要优点是集成和测试。 例如 - 假设 - 我将开始将 OCCA 集成到一个相当大的代码中,我会将源代码放入一个名为 3rdparty 的目录中,如果它使用 cmake,我只会告诉 cmake 新目录 add_directory(...) . 然后它将使用“顶级”CMakeLists.txt 中的编译器和其他规范自动构建 OCCA。 如果我(最初)在测试驱动程序中添加对 OCCA 的依赖项,然后再添加到更多源/其他目录,那将是一件轻而易举的事。

我对 cmake 的经验是,如果您在“make”级别遇到问题,通常问题是您在顶层专门化了太多(例如强制显式编译器标志......)cmake。 对于大多数问题 make VERBOSE=1 将显示完整的编译行(您可以剪切和粘贴)以找出问题所在(然后更改 cmake(而不是 make))。

我们也一直在使用 ctest ......

无论如何,只是想在这方面试水。

最好的,

阿米克

我是它的粉丝(也许太多了),事实上,CMake 支持是我寻找的第一件事。 我将所有依赖项(例如在GooFit中)作为外部的 git 子模块管理,然后如果用户不了解子模块,CMake 将为用户检查这些依赖项,然后 CMake 组合所有依赖项。 CMake 的伟大之处在于它支持任何工作方式——如果我想使用 IDE,例如 Xcode,只有使用 CMake 才容易。 我可以很容易地添加 CCache、调试构建、clang-tidy 等。

@henryiii如果它具有 IDE 集成,那听起来是个好主意!

我对删除 Makefile 构建犹豫不决,因为在大多数地方都可以找到开箱即用的make ,但我们可以在它旁边添加 CMake 支持。 我们可以更新 CI 配置以运行makecmake构建的测试。

如果你有时间,你能用核心 CMake 文件为它做 PR 吗? 如果有帮助,我可以添加构建期间预期的所有环境变量/副作用

现在,新的/潜在的 OCCA 用户(HPC 程序员)只需要下载 OCCA 源代码,然后输入make 。 很简单的。 对我来说,OCCA 的价值主张 100% 是基于它在并行编程领域提供的出色功能,而不是在其构建系统中。 不过,也许 OCCA 转向基于 cmake 的构建会有一点增值,我不知道。

也许熟悉 cmake 编码的人可以编写必要的 cmake 文件并通过拉取请求将它们贡献给 OCCA? 这可能有助于满足一些人似乎有的担忧,并帮助他们继续实际使用 OCCA。

回到 cmake 的主题,无论如何,对于我们中的一些人来说,“里程可能会有所不同。” 说真的,如果我真的学会了如何编写/调试/修改 cmake 语言代码的水平超出我目前的新手阶段,我相信我对 cmake 的热情会大大提高。 与此同时,当我遇到令人沮丧的问题时,有人写得不好/过时的CMakeLists.txt和/或有错误或写得不好的Find*.cmake文件对于我刚刚下载的某些软件包正常工作github进行评价,我会有负面评价的不愉快感觉!

@pdhahn需要明确的是,我认为我永远不会摆脱“仅键入make进行编译”的构建。 绝对需要清理 (#149),但让用户的安装和使用变得简单是这里的第一要务

添加 CMake 将有助于在已经使用 CMake 的项目中使用 OCCA,并且看起来通过这种 IDE 集成让开发人员的生活更轻松。

@dmed256你说得对,IDE 听起来确实对 OCCA 来说是一个不平凡的增值!

但是您至少需要适应各种流行的 IDE,例如 eclipse 和 Qt Creator。

CMake 支持各种工具(并且各种工具都支持它),而不仅仅是 IDE。 所有主要的 IDE 要么受 CMake 支持,要么 CMake 支持它们。 CLion、Qt Creator、Ecipe、Xcode 等。 它还支持 link-what-you-use、include-what-you-use、clang-tidy、ccache、各种测试集成、打包等。

如果 CMake 构建运行良好,您最终可以让 Makefile 简单地为您调用 CMake,我之前在 GooFit 中已经这样做过。 你甚至可以让 makefile 下载 CMake 然后调用它(我之前没有尝试过,但我想我已经和有过的人谈过了); 这将允许它在任何地方使用最新版本工作(您只需要一个简单的切换按钮,根据您运行的位置下载 linux 或 macos 二进制文件)。

我希望在接下来的几周内评估 occa,然后可能会帮助 CMake 支持。

@henryiii这是有道理的,我们只有这么多时间:) 无论如何,感谢 CMake 的建议!

最后感谢@hknibbe2、 @SFrijters @ amikstcyr@JamesEggleton的所有工作🎉

此页面是否有帮助?
0 / 5 - 0 等级