使用带有多个目录(包括目录,项目,库等)的CMAKE的C项目结构

时间:2019-07-18 22:47:28

标签: c cmake

我正在构建一个C项目,目前我对如何进行CMAKE有点迷茫。

总结:我将有3个项目,这些项目将具有多个可执行文件。这些项目将使用来自具有多个目录(子库)的库中的代码。我在include目录中包含了该项目的所有include。我还将为src和lib提供一个测试目录。

我需要多少个cmakelists.txt?每个子目录一个?如何处理源文件和头文件位于单独的目录中?我了解add_directory,add_subdirectory等的基础知识,但是我对将其与这么多组件拼接在一起感到困惑。

结构如下:

项目:

   |-- bin   
   |-- build   
   |-- src     
   |   |-- Project 1   
   |   |      |-- Project1a.c
   |   |      |-- Project1b.c
   |   |-- Project 2
   |   |      |--Project2.c
   |   |-- Project 3
   |   |      |--Project3.c
   |   |-- cmakelists.txt
   |
   |-- lib 
   |    |--Hash 
   |    |    |-- Sha256.c
   |    |    |-- MD5.c
   |    |    |-- Blake2.c
   |    |--Communications
   |    |    |-- Communications.c
   |    |--ErrorHandling
   |    |    |-- ErrorHandling.c
   |    |--cmakelists.txt
   |
   |-- include
   |    |--src
   |    |   |-- Project 1
   |    |   |     |-- Project1a.h
   |    |   |     |-- Project1b.h
   |    |   |-- Project 2
   |    |   |     |-- Project2.h
   |    |   |-- Project 3
   |    |         |-- Project3.h    
   |    |--lib
   |    |  |--Hash 
   |    |  |    |-- Sha256.h
   |    |  |    |-- MD5.h
   |    |  |    |-- Blake2.h
   |    |  |--Communications
   |    |  |    |-- Communications.h
   |    |  |--ErrorHandling
   |    |  |    |-- ErrorHandling.h
   |    |--cmakelists.txt
   |
   |-- test
   |    |--src (etc...)
   |    |--lib (etc...)
   |    |--cmakelists.txt
   |
   |--cmakelists.txt

我已经在cmakelists.txt主目录中添加了子目录,但是我试图找出从那里开始的方法。

感谢您的帮助!

0 个答案:

没有答案