CMake의 종속성 관리: 소스, 라이브러리 및 CMakeLists.txt
CMake에서 소스 파일, 라이브러리 및 CMakeList 간의 종속성 관리 .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 중국어 웹사이트의 기타 관련 기사를 참조하세요!