CMake解决方案子目录

时间:2017-04-17 19:26:01

标签: c++ cmake

我有一个包含5个项目的大型CMake解决方案。在这1个项目中创建Main可执行文件,其余4个(3个静态+ 1个动态)项目创建链接到主项目的库。

MainSolution:
 |-MainExecutablePrj
 |-StaticLib_1Prj
 |-StaticLib_2Prj
 |-StaticLib_3Prj
 |-DynamicLib_1Prj

整个项目将为 windows和linux平台构建。现在我需要在MainSolution下创建一个Sub目录,并创建一些使用DynamicLib_1(.lib / .so)的测试用例项目。到目前为止,我所做的是为每个测试用例提供不同的解决方案,并复制所需的.h文件和.lib(.so)文件,并构建测试用例解决方案。

我很难维护源代码,每当动态库发生变化时,我需要复制所有必要的文件并重新重新构建测试用例。 所以我想在我的主项目中包含测试用例解决方案,这样每当我更改动态库项目时,它也会构建测试用例项目。

我非常清楚将这些测试用例解决方案添加为MainSolution下的项目,但我想创建子目录并将所有测试用例项目放在该文件夹下。

MainSolution:
 |-TestCasesFolder
   |-TestCase_1Prj
   |-TestCase_2Prj
   |-...
 |-MainExecutablePrj 
 |-StaticLib_1Prj
 |-StaticLib_2Prj
 |-StaticLib_3Prj
 |-DynamicLib_1Prj

有人可以帮助我吗

1 个答案:

答案 0 :(得分:0)

没有必要复制任何文件。

  • 让CMake找到带find_library的构建库,并在子目录构建文件夹的路径中添加提示
  • 让CMake包含子项目中包含include_directories的头文件。添加前缀以使其与平台无关。

关于测试: 子项目的所有单元测试应该位于此项目结构内,而不是根项目中。将所有集成测试放在根项目中,或作为根项目的一部分放在单独的测试项目中。

Example Structure