2011-10-02 196 views
2

我們想用C開發一些動態鏈接的庫,每個都用於Linux和Windows。我們想用cmake把CMakeLists.txt放在哪裏?

請,如何組織目錄,並在那裏把那些CMakeLists.txt(或者我們應該只有一個?)

回答

1

另見我回答另一個非常類似的堆棧溢出問題:

multiple directories under cmake

+0

優秀的職位。謝謝。 – Cartesius00

+0

問題,你列舉了源文件 - 這與GLOBing的關係如何?更好,更糟? – Cartesius00

+0

如果它非常出色,你可以把它變成最好的...... :-)通常,明確列舉文件會更好:這樣,當你改變CMakeLists文件來添加/刪除/修改源文件時,CMake可以檢測到改變並適當地重新運行。有了globbing,沒有監控整個文件系統就沒有辦法發生這種情況。 – DLRdave

4

沒有單一的方式,它必須做的,但在這裏,一種可能的方式:

CMakeLists.txt 
src/ 
    CMakeLists.txt 
    lib1/ 
     CMakeLists.txt 
     lib1.c 
    lib2/ 
     CMakeLists.txt 
     lib2.c 
    app/ 
     CMakeLists.txt 
     app.c 
include/ 
    lib1.h 
    lib2.h 

儘管您可以在頂級CMakeLists.txt文件中執行所有操作,但是如果您的項目非常複雜,它將非常快速地變得很大並且非常麻煩。

+0

請和在哪裏得到那些'build'目錄? - 我假設每個圖書館都應該有一個。我對嗎? – Cartesius00

+1

我把構建目錄放在與src /和include /目錄相同的級別。在build目錄中,運行命令「cmake ..」,然後運行「make」(假設爲* nix)。這被稱爲源外構建,因此您的構建工件都不會與源文件混淆。構建目錄結構將匹配項目的目錄結構,例如,lib1的所有構建文件都將位於build/src/lib1中。 – able