【发布时间】:2018-03-06 15:56:29
【问题描述】:
我尝试在项目目录上运行测试。我的 CMakeLists.txt 是
cmake_minimum_required (VERSION 2.6)
project (fleetd-test-retranslator)
find_path ( ../
../../cashes
)
include_directories( ../
../../cashes
../../protocols
)
add_executable (fleetd-test-retranslator test_retranslator.cpp)
enable_testing()
find_package(GTest REQUIRED)
if (NOT GTest_FOUND)
message(FATAL_ERROR "Cannot find Google Test Framework!")
endif()
target_link_libraries(fleetd-test-retranslator GTest::GTest GTest::Main)
set (sources
test_retranslator.cpp
../retranslator.cpp
../retranslator.h
../slcache.cpp
)
set(libs
utils
core
cashes
gtest
gmock
)
但是在我尝试编译这个测试之后我收到一个错误
/home/yrusinov/projects/fleetd-2/cashes/StateCache.h:10: error protocols/Protocol.h: No such file or directory
#include "protocols/Protocol.h"
^
尽管包含目录并且存在文件?我的错误在哪里?
【问题讨论】:
-
包含目录应包含
protocols/子目录,而子目录又应包含Protocol.h文件。你的情况是这样吗? -
是的,确实如此。
-
我猜,标题的完整路径是
/home/yrusinov/projects/fleetd-2/protocols/protocols/Protocol.h,不是吗?顺便说一句,您对find_path的使用是完全错误的。你想用它实现什么? -
不,我的完整路径是 /home/yrusinov/projects/fleetd-2/protocols/Protocol.h
-
仔细阅读我的第一条评论:在
include_directories调用中指定的包含目录应该有protocols子目录。您已将/home/yrusinov/projects/fleetd-2/protocols/指定为包含目录,但它没有protocols子目录。所以找不到头文件。正确的包含目录应该是/home/yrusinov/projects/fleetd-2/protocols,或../..,相对于项目的源目录。
标签: c++ unit-testing cmake