Как правильно использовать include_directories в cmake? - PullRequest
0 голосов
/ 02 января 2019

У меня есть два файла cmake:

CMakeLists.txt:

cmake_minimum_required(VERSION 3.13)
project(as_math_engine)

set(CMAKE_CXX_STANDARD 14)

include_directories(include/as_math_engine)
add_library(as_math_engine evaluable.h)
add_subdirectory(tests)

Тесты / CMakeLists.txt:

include_directories(libs)
add_executable(as_math_engine_tests src/main.cpp)

И у меня есть этот include/as_math_engine/evaluable.h файл, но CMake сообщает мне:

Не удается найти исходный файл :valuable.h

Почему это? И как я могу решить эту проблему?

1 Ответ

0 голосов
/ 02 января 2019

include_directories() лучше всего использовать для задания путей включения для нескольких целей в проекте, обычно предпочтительным является target_include_directories().

Возможно, есть лучшие способы настройки as_math_engine, если это будет библиотека только для заголовков.

Вам также нужно использовать add_library(as_math_engine include/as_math_engine/evaluable.h), потому что add_library() не ищет файлы.

Библиотека только заголовка показывает, как ее настроить и использовать, чтобы избежать подобных проблем.

Либо удалите оба include_directories() и используйте target_include_directories(as_math_engine_tests PRIVATE "${CMAKE_SOURCE_DIR}/include/as_math_engine" libs), чтобы as_math_engine_tests использовал правильный путь включения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...