3

我一直在使用cmake在Linux有一段時間了,但我需要移動到Visual Studio中的幾個原因的工作...文件添加到CMake的項目在Visual Studio 2010

我有生成cmake項目,並且我可以在Visual Studio中加載解決方案,但是當我嘗試添加文件時,它將被添加到構建文件的位置,而不是添加到源目錄中。有沒有辦法解決這個問題,還是必須通過Explorer添加它們,然後重新生成cmake構建文件,然後重新打開解決方案?這似乎有點笨拙,我希望有一個更簡單的方法。

回答

3

要通過Visual Studio添加新文件,您可以選擇「添加 - >新建項目」選項。在結果窗口中,應該有一個「位置」文本輸入框。這具有默認指定的構建目錄,但路徑可以很容易地更改爲源樹中的某處。

9

是的,你應該通過CMakeLists.txt文件而不是通過VS添加文件。這裏有幾個選擇。

推薦的方法是在CMakeLists文件中明確列出所有源文件。如果你想添加一個新文件,它必須被添加到CMakeLists.txt中。這種方法的優點是,在修改CMakeLists文件後,整個構建「過時」,因此只是試圖在VS中構建任何目標將導致CMake重新運行並將文件添加到適當的目標。

另一種選擇是利用CMake的file(GLOB ...)命令。這將搜索給定路徑的來源,並可用於自動生成您的源列表。好處在於,它比手動列出CMakeLists文件中的所有文件都要枯燥乏味。然而,缺點是如果將新文件添加到源目錄中,CMake將不得不手動重新運行,因爲CMake不知道源目錄是過時的。我不得不說,我一般不會覺得這是一個問題 - 如果你剛剛添加了一個文件,並且它沒有出現在你的VS資源管理器中,這很明顯,而且通過構建時間,它更加明顯,因爲構建失敗(或者你不是使用該文件)。

請注意,對於任一選項,如果您重新運行CMake,則不需要關閉VS.

+0

謝謝你的回答,但是,我遇到的問題不是關於如何讓CMake識別新文件,我已經用你的建議覆蓋了一個文件(GLOB ...) 。相反,我正在嘗試將一個全新的源文件放入項目中(理想情況下是在VS資源管理器中)。目前,我似乎必須通過Windows Explore來完成此操作,然後重新運行CMake以使文件在Visual Studio中顯示。或者,如果我嘗試通過VS資源管理器添加一個新文件,該文件將進入構建目錄結構,而不是源文件。 (不需要) – 2013-03-24 17:19:54

+1

當你通過VS添加一個新文件時,你不能只選擇正確的目錄嗎? 「添加新項目」窗口有一個「位置」字段,默認情況下選擇構建目錄,但可以很容易地將其更改爲源樹中的某處。 – Fraser 2013-03-24 21:19:58

+0

這就是我一直在尋找的。我早些時候嘗試過,但我沒有仔細觀察,看到它在構建樹中...... doh! (如果你想把它作爲新的答案,我會接受它) – 2013-03-25 01:49:57

相關問題