내 프로젝트에 두 개의 유틸리티 라이브러리가 있습니다. 나는 라이브러리를위한 CMake 설정을 작성하는 가장 좋은 방법을 찾고있다.CMake에 라이브러리가있는 헤더 포함
/my_project
--> CMakeLists.txt
--> main.cpp
--> /utils
--> CMakeLists.txt
--> common.h
--> /base_c
--> CMakeLists.txt
--> base_c.c
--> base_c.h
--> /base_cpp
--> CMakeLists.txt
--> base_cpp.cpp
--> base_cpp.hpp
나의 현재 CMake 파일 :
/my_project/CMakeLists.txt
cmake_minimum_requared(VERSION 3.8)
project(my_project)
add_subdirectory(utils)
add_executable(main main.c)
target_link_libraries(main utils base_c base_cpp)
/my_project/utils/CMakeLists.txt
add_subdirectory(base_c)
add_subdirectory(base_cpp)
add_library(utils)
target_sources(utils PUBLIC common.h)
/my_project/유틸/base_c /CMakeLists.txt
add_library(base_c base_c.c)
target_sources(base_c PUBLIC base_c.h)
/my_project/utils/base_cpp/CMakeLists.txt
add_library(base_cpp base_cpp.cpp)
target_sources(base_cpp PUBLIC base_cpp.hpp)
find_library(BASEC base_c ../base_c)
target_link_libraries(base_cpp BASEC)
문제는 base_cpp
찾을 수없는이 base_c
에서 포함되어 있다는 것입니다. 구성을 어떻게 수정해야합니까?
나는 target_include_directories(base_cpp PRIVATE ../base_c)
과 작동하도록 만들었지 만보기 흉한 것이므로 필요하지 않아야합니다 (INTERFACE_INCLUDE_DIRECTORIES documentation).
? 'include_directories' 나'target_include_directories'없이 하나의 라이브러리라도 어떻게 컴파일했는지 궁금합니다. – Tsyvarev
@Tsyvarev 나는 이것에 완전히 틀릴지도 모른다. 라이브러리의'INTERFACE_INCLUDE_DIRECTORIES'를 어떻게 사용할 수 있는지 설명해 주시겠습니까? – voddan
CMake 후에 어떤 빌드 시스템을 사용합니까? 메이크 파일? Visual Studio 프로젝트? 디렉토리가 실제로 포함 디렉토리로 전달되는 파일을 조사 할 수 있습니까? – Anedar