2011-03-22 170 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