生活中充满红蓝药丸的选择,红色是真相,痛苦却现实,蓝色是假象,快乐而愚昧。就像电影《黑客帝国》,亲爱的读者,你肯定也会选择红药丸,勇敢探寻 CMake 依赖关系的真相。想了解其中的水有多深,请继续阅读!
任何复杂的软件都有其依赖关系,无论是系统API还是其他库调用,都是静态或动态进行连接。作为构建系统生成器,CMake 可以帮助我们以最自然的方式管理这些依赖关系。
案例1:开发人员处理标准软件的 CMake 依赖关系
开发人员会知道编译项目需要哪些依赖关系。在 CMakeLists.txt 文件中,开发人员根据需要标记这些标准包。例如,如果 OpenCV 是一个包,没有它项目将无法编译,因此它将被标记为:
find_package(OpenCV REQUIRED)
备注:建议阅读博客《如何使用 OpenCV 和 CMake》以更好地理解:
一旦找到所需的包,你也会同时看到相关的头文件目录和其他设置。例如,你的项目需要 Boost 库,那么其 CMakeLists.txt 文件构造如下:
cmake_minimum_req