У меня есть следующая 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
-файлы.
Есть ли лучшее решение для такого случая?