在测试中包括专用头

时间:2019-03-31 10:01:50

标签: c++ testing cmake

我具有以下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.ccinternal2.cc中定义的函数。

添加target_link_libraries(all_tests mylib)不会在包含目录中添加私有头。因此,我目前发现的唯一解决方案是在整个src/linux目录中添加路径。

我不确定这种方法,因为它会同时添加h个文件和c个文件。

在这种情况下是否有更好的解决方案?

0 个答案:

没有答案