1

我有一个复杂的 C++ 项目文件夹,其中包含两个文件夹。

  • 具有多个子文件夹和 CmakeList.txt 文件的 C++ src文件夹。src 文件夹包含 main.cpp 文件。
  • 一个 C++ 构建标准外部文件夹ExtLib,其中包含多个子文件夹和一个用于编译的build.sh脚本和 CmakeList.txt 文件。.cpp 文件链接(包括头文件(.h)文件)到这个 ExtLib 文件夹。

Project 文件夹包含一个主 build.sh 文件,该文件编译项目并创建一个包含调试和发布配置的构建文件夹。它还包含一个 CmakeList.txt 文件,我想它会在 build.sh 文件执行时执行。我需要在这个项目上执行的任务是创建一个新的测试文件夹并添加一个文件 ( runtests.cpp ),该文件对 src 文件夹 .cpp 文件中编写的代码执行单元测试(使用 catch 单元测试)。

我面临的问题:

  1. 第一个问题是当我在我的测试文件夹中创建一个源测试文件,并试图从 src 文件夹中包含头文件时,编译器会抛出一个致命错误,即找不到此类 (.h) 文件。(来自 src 文件夹)。有时问题也会出现在 src 文件夹文件中,因为它们无法找到 ExtLib 文件夹文件。

  2. 第二个问题是,如果通过某种方式我能够成功地包含来自其他 src 或 ExtLib 文件夹的文件,我如何能够运行测试源文件 runtests.cpp 来执行我的测试用例?

项目层次结构如下所示:

TestProject │ build.sh │ CMakeList.txt
└───ExtLib │ │ buildscript.sh │ │ CMakeList.txt │ └───subfolder1 │ └───subfolder2(containing sub-folders) └───src │ │ main.cpp │ │ CMakeList.txt │ └───folder1 │ └───folder2(containing sub-folders) └───tests │ runtests.cpp │ catch.hpp

我是否也需要为我的测试文件夹包含一个 CMakelist.txt 文件?如果必须要怎么做?我对这个领域很陌生。希望大家能帮忙。谢谢 Rg

4

0 回答 0