Добавление заголовков в проект действительно только помогает IDE находить заголовки. Это не меняет инструкции по сборке. Вместо этого вам нужно использовать target_include_directories()
с разделом INTERFACE
или PUBLIC
, чтобы получить любые библиотеки, которые ссылаются на него, чтобы добавить к себе включаемые каталоги.
Ваша библиотека помощников на данный момент является скорее интерфейсом , Чтобы этот минимальный пример работал, сделайте следующее:
cmake_minimum_required(VERSION 3.17)
project(evolution)
add_library(helpers INTERFACE) # INTERFACE is good for header-only libraries
target_include_directories(helpers INTERFACE src/helpers)
add_library(engine
src/engine/game.h
src/engine/game.cpp)
add_executable(evolution src/main.cpp)
target_link_libraries(evolution engine helpers)
Теперь включите в angular скобки: #include <disposable.h>
Если ваша библиотека становится более сложной (чем просто заголовочные файлы), тогда замените INTERFACE
в add_library
вашими источниками. Чтобы сделать включаемые каталоги доступными для библиотеки helpers
и любой библиотеки, которая на нее ссылается, измените INTERFACE
на PUBLIC
в target_include_directories
.
cmake_minimum_required(VERSION 3.17)
project(evolution)
add_library(helpers src/helpers/helper.cpp)
target_include_directories(helpers PUBLIC src/helpers)
add_library(engine
src/engine/game.h
src/engine/game.cpp)
add_executable(evolution src/main.cpp)
target_link_libraries(evolution engine helpers)