2011-12-18 29 views
2

我想用CMake構建一個大項目,但是我在如何編寫CMakeList.txt文件時遇到困難。 我的項目是在每個包含一套或多或少涉及一起如下.HPP和.cpp文件不同的文件夾分離:Cmake - 如何建立一個項目在不同的子文件夾中分離

root 

    - memory 
    -- Memory.cpp 
    -- Memory.hpp 
    -- MemoryManager.hpp 
    -- MemoryManager.cpp 
    -- CMakeLists.txt 

    - tools 
    -- Array.cpp 
    -- Array.hpp 
    -- CMakeLists.txt 

    - main.cpp 
    - CMakeLists.txt 

我想共同建立的所有文件的可執行文件。我不想在每個子文件夾中構建庫,因爲我沒有看到有任何好的理由去做。 我還想避免在位於項目根目錄的CMakeLists.txt文件的ADD_EXECUTABLE命令中放置所有源文件的單個大列表。

你對如何正確設置它有任何想法嗎?

乾杯,

M.

回答

4

可以使用GLOB的功能,如:

file (GLOB _my_sources RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} 
    memory/*.cpp tools/*.cpp main.cpp) 
add_executable (myprogbin ${_my_sources}) 
set_target_properties (myprogbin PROPERTIES OUTPUT_NAME myprog) 

參考見http://cmake.org/cmake/help/cmake-2-8-docs.html#command:file

+0

感謝那是完美的。 – Nanoc

+0

我只是想知道...爲什麼最後調用set_target_properties?在這種情況下,你有沒有具體的原因? (我恐怕我可能不瞭解一些基本的東西)。 –

+0

set_target_properties只是設置二進制可執行文件的名稱。你可能不需要它。爲了完整性,我添加了它。 –

相關問題