我很抱歉,如果這已被回答,我搜索了一段時間,找不到直接的答案。Cmake如何使頭文件自動包括他們的源文件
我已經習慣了windows visual C++,其中我使用頭文件(*.h
)來聲明類,它是函數和源文件(*.cpp
),其中實際類的函數被詳細編碼。我現在在使用Kdevelop的Linux下工作,它使用cmake
。我創建了一些帶有類的頭文件並聲明瞭它們的函數,然後將這些函數編碼到它們各自的源文件中。每次嘗試構建時,都會收到錯誤消息,說明Class::function()
是未定義的參考。如果我在頭文件中添加實際的功能,建築工作正常。所以我假設cmake
沒有正確鏈接頭文件的相應源文件。我假設這會自動發生,但我現在猜測事實並非如此。我怎樣才能做到這一點?對於我創建的每個頭文件,使用源文件的完全相同的名稱,將它鏈接並構建?
如果已經回答了這個問題,請發佈一個鏈接,如果沒有,我會喜歡簡單的解釋。我知道有很多方法可以做到這一點(autoconf
,make dep
等),但現在我堅持使用cmake
。
謝謝你的工作,但我想沒有辦法自動執行此任何新添加的foo.h&foo.cpp對? – 2011-03-24 01:39:51
@亞歷克斯:記得接受答案。 – 2011-03-24 05:07:12
有兩種方法可以完成。推薦的方法是讓KDevelop將文件添加到源列表中,如上所示。在技術上也可以使用文件(GLOB source_list * .cpp)等cmake命令來生成目錄中的源代碼列表。但是,我只是提到這是說這是一個壞主意。如果你這樣做,你必須記住每次添加一個文件時要將整個構建目錄全部刪除,因爲cmake將無法判斷是否添加了新文件。 – ltc 2011-03-24 07:16:40