У меня есть проект, который использует cmake
для сборки.В проекте есть несколько подмодулей, которые создаются как библиотеки.Структура выглядит следующим образом:
src
├── CMakeLists.txt
├── libA
│ ├── CMakeLists.txt
│ ├── include
│ │ └── A
│ │ └── A.h
│ └── src
│ └── A.cpp
│
├── libB
│ ├── CMakeLists.txt
│ ├── include
│ │ └── B
│ │ └── B.h
│ └── src
│ └── B.cpp
│
├── include
│ └── project.h
├── main
│ ├── CMakeLists.txt
│ └── main.cpp
└── other_main
├── CMakeLists.txt
└── main.cpp
Теперь выясняется, что мне нужно преобразовать модуль B в основанный на шаблонах, а не в связываемом lib;т.е. я хочу экспортировать только заголовки из модуля B.
В настоящее время CMakeLists.txt модуля B содержит следующее:
add_library(B STATIC ${SOURCES})
target_include_directories(B
PUBLIC
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
... other include dirs ...
PRIVATE
src)
# B depends on A
target_link_libraries(B A)
export(
TARGETS B
FILE BLibraryConfig.cmake)
Какие минимальные изменения мне нужно внести в мои файлы CMakeLists (в модуле или области проекта), чтобы иметь возможность поддерживать B как библиотеку шаблонов, учитывая, что B все еще зависит от A, и оба моих главных проекта используют A и B?