2011-03-22 69 views
7

我想为我的linux C++项目使用cmake构建一些标准布局,并包含一些可执行文件和这些可执行文件可能链接到的库。目前我只有一个项目文件夹和每个子项目的子文件夹。 CMakeLists位于顶层,每个子层都有一个可选级别添加的CMakeLists。Linux C++项目目录布局 - CMake

Project- 
      executable1 
      executable2 
      library 

不过,我认为这将是更好的设置像下面

Project - 
    lib //Library output folder 
    bin //Executable output folder 
    src //Al cpp source files 
    include //All header files 
    test //All tests 

我会在顶层只是一个CMakeLists。 我可以很容易地在cmake中设置它。有没有人有理由选择不同的布局?

回答

7

我不会把的lib,bin和测试输出直接在项目目录:如果你想使一个调试和发布版本,您遇到问题,因为你只有一个占位符。源代码构建是你的朋友!我会使用类似:

Project 
    src 
    include 
    CMakeLists.txt 

这些将使用cmake时产生:

Project_build_dbg 
    bin 
    lib 
    test 

Project_build_release 
    bin 
    lib 
    test 
+1

对于源版本以外的+1。不要混乱你的源代码目录,不要求你编辑你的VCS的忽略文件,允许你压缩你的源代码目录而不产生一个xxx MB zip,因为它包含目标文件等等。 – stijn 2011-03-22 12:07:04

+0

好主意,需要工作了解如何拥有两种不同的构建类型。 – Mark 2011-03-22 12:15:46

1

您打算使用的布局几乎是大多数项目的组织方式。它是一个非常有组织的项目方式。我通常也有一个docs文件夹,其中包含有关该项目的所有文档。所以继承我通常的项目设置。

Project - 
    lib //Library output folder 
    bin //Executable output folder 
    src //All cpp source files 
    include //All header files 
    test //All tests 
    docs //All project documentation ------> new addition 
+0

+1文档,我忘了,谢谢。也意味着他们会受到我的git设置的版本控制。但是,如上所述,我会将lib/bin/test移到项目源之外。 – Mark 2011-03-22 12:19:13