我知道每個子目錄都必須有一個CMakeLists.txt,但我不想爲每個目錄創建一個庫或一個可執行文件。如何將子目錄合併到單個可執行文件中?
我的文件夾結構:
/src
/exportedHeaders
/server
main.cpp
每個子文件夾擁有的.h和.cpp文件的混合。我不明白我怎樣才能把它全部混合到一個單獨的可執行文件中,似乎並沒有一個指令。
我知道每個子目錄都必須有一個CMakeLists.txt,但我不想爲每個目錄創建一個庫或一個可執行文件。如何將子目錄合併到單個可執行文件中?
我的文件夾結構:
/src
/exportedHeaders
/server
main.cpp
每個子文件夾擁有的.h和.cpp文件的混合。我不明白我怎樣才能把它全部混合到一個單獨的可執行文件中,似乎並沒有一個指令。
我還沒有真正使用過CMake,因此可能有更好的方法,但據我所知可以指定所有源文件的路徑。
如:
add_executable (myProgram main.cpp subdir1/foo.cpp subdir2/bla.cpp)
我想你可以使用通配符文件得到*.cpp
在每個子目錄,以減少打字。 請參閱this mailing list message瞭解有關CMake中文件通配的信息。
與CMake,明確列出你的文件比使用任何文件通配技術更好,如果你明確列出它們,那麼你必須改變你的CMakeLists.txt文件,當你添加和刪除文件......並且構建系統可以注意到CMakeLists.txt文件已過時,並且在您做出這樣的更改時自動重新運行CMake。使用文件匹配技術,不會發生這樣的文件更改,並且您可以執行沒有得到CMake在必要時自動運行的好處 – DLRdave 2011-06-16 10:59:07
是的,這是處理這種情況的典型方式。FWIW,我通常將我的項目設置爲包含'include /','src /'和'test /'文件夾,並且我通常只在頂部目錄中有一個'CMakeLists.txt'文件,用於我的所有目標,這些目標可能分散在不同的源文件夾中。 – 2012-08-05 00:48:58
通常,您將.cpp文件(包括.h文件)編譯爲單個可執行文件。這是你在問什麼?或者你知道如何編譯,但要求別的嗎? – jwd 2011-06-15 18:32:32
@jwd:對,但是如何將子文件夾內的cpp文件添加到從topfolder生成的可執行文件中?我想我錯過了更大的東西:( – Blub 2011-06-15 19:21:40