Я учусь писать «современные» конфигурации cmake и пытаюсь создать ссылку на библиотеку с исполняемым файлом.Моя структура тестового проекта выглядит следующим образом:
.
|-- foo
| |-- src
| | |-- foo.cpp
| | `-- foo_impl.cpp
| |-- include
| | `-- foo
| | `-- foo.h
| |-- internal
| | `-- foo_impl.h
| `-- CMakeLists.txt
|-- src
| `-- main.cpp
`-- CMakeLists.txt
. / CMakeLists.txt равен
cmake_minimum_required(VERSION 3.12)
project(test_cmake LANGUAGES CXX)
add_subdirectory(foo)
add_executable(test_executable
src/main.cpp
)
target_include_directories(test_executable
PRIVATE
include
foo
)
. / Foo / CMakeLists.txt равен
cmake_minimum_required(VERSION 3.12)
add_library(foo
src/foo_impl.cpp
src/foo.cpp
)
target_include_directories(foo
PUBLIC
include
PRIVATE
${CMAKE_CURRENT_SOURCE_DIR}
)
Причиной такой конфигурации является проверка, предоставляет ли cmake папку «foo / internal» клиентам библиотеки foo.
- Не удается соединиться с библиотекой foo.
- Невозможно использовать#include "foo / foo.h" в коде клиента.
Я допустил ошибку в своей конфигурации?