CMake 中的依赖关系管理:源、库和 CMakeLists.txt
在 CMake 中,管理源文件、库和 CMakeLists 之间的依赖关系.txt 确保项目结构良好且高效。本文探讨了在涉及多个库和可执行文件的复杂项目中有效处理依赖关系的策略。
本地依赖关系:优势
设置本地依赖关系通过指定来简化依赖关系管理每个子目录的 CMakeLists.txt 中源和链接级别的依赖项。这种方法提供了清晰的层次结构,并通过排除不相关的依赖项来避免不必要的膨胀。
示例项目结构和 CMakeLists.txt
考虑一个具有互连库和可执行文件的项目:
Lib - LibA - CMakeLists.txt - Src - a.cc - Inc - a.h - LibB - CMakeLists.txt - Src - b.cc - Inc - b.h - LibC - CMakeLists.txt - Src - c.cc - Inc - c.h App1 - CMakeLists.txt - Src - main.cc
库 CMakeLists.txt(LibA、LibB、LibC)
include_directories(Inc ../LibC/Inc) add_subdirectory(../LibC LibC) add_library(LibA Src/a.cc Inc/a.h) target_link_libraries(LibA LibC) include_directories(Inc) add_library(LibB Src/b.cc Inc/b.h) include_directories(Inc ../LibB/Inc) add_subdirectory(../LibB LibB) add_library(LibC Src/c.cc Inc/c.h) target_link_libraries(LibC LibB)
App1 CMakeLists.txt
cmake_minimum_required(VERSION 2.8) project(App1 CXX) file(WRITE "Src/main.cc" "#include \"a.h\"\n#include \"b.h\"\nint main()\n{\na();\nb();\nreturn 0;\n}") ... include_directories(../Lib/LibA/Inc ../Lib/LibB/Inc) add_subdirectory(../Lib/LibA LibA) add_subdirectory(../Lib/LibB LibB) add_executable(App1 Src/main.cc) target_link_libraries(App1 LibA LibB)
库依赖关系图
此项目的依赖关系图:App1 -> LibA-> LibC-> LibB 应用程序1 -> LibB
管理多个依赖项的策略
存在多种管理多个依赖项的方法:
最佳实践
以上是如何有效管理 CMake 中的依赖关系:本地依赖关系、库目标和项目结构指南?的详细内容。更多信息请关注PHP中文网其他相关文章!