我具有以下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)
不会在包含目录中添加私有头。因此,我目前发现的唯一解决方案是在整个src/linux
目录中添加路径。
我不确定这种方法,因为它会同时添加h
个文件和c
个文件。
在这种情况下是否有更好的解决方案?