Включение частных заголовков в тесты - PullRequest
0 голосов
/ 31 марта 2019

У меня есть следующая CMake структура проекта:

mylib
 |
 |_include
 |    |_mylib.h
 |
 |_src
 |  |_linux
 |      |_internal1.h
 |      |
 |      |_internal1.cc
 |      |
 |      |_internal2.h
 |      |
 |      |_internal2.cc
 |      |
 |      |_mylib.c
 |_test
 |   |_all_tests.cc
 |
 |_CMakeLists.txt

Мой CMakeLists.txt выглядит следующим образом:

cmake_minimum_required(VERSION 3.0)

project(mylib)

SET(LIB_SOURCES
    src/linux/internal1.cc
    src/linux/internal2.cc
)

SET(LIB_TEST_SOURCES
    test/all_tests.c
)

add_library(mylib SHARED ${LIB_SOURCES})
target_include_directories(mylib PUBLIC ${PROJECT_SOURCE_DIR}/include)

add_executable(all_tests ${LIB_TEST_SOURCES})
target_include_directories(all_tests PRIVATE src/linux) # <-- HERE?
target_link_libraries(all_tests mylib)

enable_testing()
add_test(NAME all_tests COMMAND all_tests)

Проблема: Я хочупроверить функции, которых нет в
target_include_directories(mylib PUBLIC ${PROJECT_SOURCE_DIR}/include).В моем случае это функции, определенные в internal1.cc и internal2.cc.

Добавление target_link_libraries(all_tests mylib) не добавляет частные заголовки в каталог include.Таким образом, единственное решение, которое я нашел в настоящее время, это добавить путь для всего каталога src/linux.

Я не уверен в этом подходе, так как он добавляет h -файлы, а также c -файлы.

Есть ли лучшее решение для такого случая?

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