c++ - 来自不同文件夹的 CMake 测试源

标签 c++ cmake googletest ctest

我开始尝试使用 CMake 使用 Qt 创建项目并使用 Google Test 对其进行测试。此刻,我成功地找到了一种编译和链接所有需要的库的方法。但是,我找不到将源链接到具有以下项目结构的测试文件的方法:

root
|
+-- CMakeLists.txt
+-- src
| |
| +-- CMakeLists.txt
| +-- MyClass.h
| +-- MyClass.cpp
|
+-- test
| |
| +-- CMakeLists.txt
| +-- MyClassTest.cpp
|
+-- lib
  |
  +-- gtest-1.6.0
    |
    +-- CMakeLists.txt

根 CMakeLists.txt 包含 gtest、src 和测试文件夹的 add_subdirectory。我已成功编译并运行“Hello world”应用程序和简单的 EXPECT_TRUE(true) 测试,以检查每个部分是否正确编译。不幸的是,我找不到将我的源文件包含到测试中的方法。是否可以使用以下项目结构?

PS 我知道可以将我的源代码编译为库并将其链接到测试,但我不喜欢这种方法,因为它更适合集成测试,而不是单元测试...

编辑:向树中添加了类名

最佳答案

您可以在根 CMakeLists.txt 级别添加一个全局变量:

set(ALL_SRCS CACHE INTERNAL "mydescription" FORCE)

在第一个add_subdirectory(src)中,你可以做:

set(ALL_SRCS ${ALL_SRCS} blabla.cpp CACHE INTERNAL "description")

然后在 add_subdirectory(test) 中,您继续:

set(ALL_SRCS ${ALL_SRCS} bla_test.cpp CACHE INTERNAL "description")

然后您可以使用所有源文件执行 add_executable 或 library 或其他任何操作。

编辑:在 CMake 中为全局变量添加技巧。

关于c++ - 来自不同文件夹的 CMake 测试源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13797224/

相关文章:

c++ - 对 C++ 中范围解析运算符的困惑

c++ - 从 Visual Studio 2013 转换到 Visual Studio 2015 的问题

python - pybind11 python 2.7 和 3.6

c++ - 如何在测试系统中自动注册测试用例?

visual-c++ - 如何让 MSBuild 自动下载解决方案/项目中引用的新 nuget 包?

python - 为什么 C++ 比带有 boost 的 python 快得多?

c++ - While 循环不识别输入

windows - 在 cmake 中设置 curl 库路径

cmake - 为什么我无法将 Mac 框架文件与 CMake 链接?

c++ - 使用spdlog(C++)进行记录,记录器未将日志写入文件