2011-06-15 46 views
0

我知道每個子目錄都必須有一個CMakeLists.txt,但我不想爲每個目錄創建一個庫或一個可執行文件。如何將子目錄合併到單個可執行文件中?

我的文件夾結構:

/src 
    /exportedHeaders 
    /server 
    main.cpp 

每個子文件夾擁有的.h和.cpp文件的混合。我不明白我怎樣才能把它全部混合到一個單獨的可執行文件中,似乎並沒有一個指令。

+0

通常,您將.cpp文件(包括.h文件)編譯爲單個可執行文件。這是你在問什麼?或者你知道如何編譯,但要求別的嗎? – jwd 2011-06-15 18:32:32

+0

@jwd:對,但是如何將子文件夾內的cpp文件添加到從topfolder生成的可執行文件中?我想我錯過了更大的東西:( – Blub 2011-06-15 19:21:40

回答

2

我還沒有真正使用過CMake,因此可能有更好的方法,但據我所知可以指定所有源文件的路徑。

如:

add_executable (myProgram main.cpp subdir1/foo.cpp subdir2/bla.cpp) 

我想你可以使用通配符文件得到*.cpp在每個子目錄,以減少打字。 請參閱this mailing list message瞭解有關CMake中文件通配的信息。

+0

與CMake,明確列出你的文件比使用任何文件通配技術更好,如果你明確列出它們,那麼你必須改變你的CMakeLists.txt文件,當你添加和刪除文件......並且構建系統可以注意到CMakeLists.txt文件已過時,並且在您做出這樣的更改時自動重新運行CMake。使用文件匹配技術,不會發生這樣的文件更改,並且您可以執行沒有得到CMake在必要時自動運行的好處 – DLRdave 2011-06-16 10:59:07

+0

是的,這是處理這種情況的典型方式。FWIW,我通常將我的項目設置爲包含'include /','src /'和'test /'文件夾,並且我通常只在頂部目錄中有一個'CMakeLists.txt'文件,用於我的所有目標,這些目標可能分散在不同的源文件夾中。 – 2012-08-05 00:48:58

相關問題