- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
想象一个包含多个组件的整体项目:
现在,假设 web 依赖于依赖于 basic 的 io,所有这些东西都在一个 repo 中,并且有一个 CMakeLists.txt 来将它们构建为共享库。
如果这三个应用程序都是可选的并且在构建时可能不存在,我应该如何设置才能构建这三个应用程序?
一个想法是在主仓库中有一个空的“apps”目录,我们可以将我们想要的任何应用程序仓库克隆到其中。我们的主要 CMakeLists.txt 文件可以使用 GLOB 查找所有应用程序目录并构建它们(事先不知道会有多少)。这种方法的问题包括:
make
时,CMake 不会重新生成,所以如果你添加一个新的应用程序,你必须再次运行 cmake
。一般概念类似于传统的递归 CMake 项目,但较低级别的模块不一定事先知道哪些较高级别的模块将使用它们。然而,我不想要求用户将低级库安装在固定位置(例如 /usr/local/lib
)。但是,我确实希望一次调用 make
以注意到整个项目中更改的依赖项,因此如果我正在构建一个应用程序但更改了其中一个低级库,那么一切都会适本地重新编译。
最佳答案
我的第一个想法是使用 CMake 导入/导出目标 功能。
有一个用于 basic
、io
和 web
的 CMakeLists.txt 和一个引用这些的 CMakeLists.txt。然后,您可以使用 CMake export 功能导出这些目标,然后应用程序项目可以import CMake 目标。
当您首先构建库项目时,应用程序项目应该能够自动找到已编译的库(无需将库安装到 /usr/local/lib
)否则总是可以设置设置正确的 CMake 变量以指示正确的目录。
当这样做时,应用程序项目中的 make
不会在库项目中执行 make
,您必须自己处理。
关于build - CMake:如何最好地构建多个(可选)子项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6459686/
我正在尝试用 Swift 编写这段 JavaScript 代码:k_combinations 到目前为止,我在 Swift 中有这个: import Foundation import Cocoa e
我是一名优秀的程序员,十分优秀!