【问题标题】:cmake tests does not compilecmake 测试无法编译
【发布时间】: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


【解决方案1】:

非常感谢,我在 include_directories (../ ../../) 中设置并全部编译。

【讨论】:

    猜你喜欢
    • 2020-05-31
    • 2021-03-18
    • 1970-01-01
    • 2015-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-08
    相关资源
    最近更新 更多