2011-08-17 48 views
7

我在解決方案中對我的代碼的組織有一點問題。 我有一個習慣,通過爲每個目錄創建一個目錄來組織我的名字空間。 例如,如果我創造這樣的事情:如何使用CMake來組織我的文件?

namespace test { namespace blabla { ... } } 

我會創建一個目錄測試和它裏面的目錄布拉布拉,但CMake的並不能讓他們出現在我的Visual Studio或Xcode項目。

有沒有一個把戲來完成它?

+0

你想在你的項目中出現什麼?文件?文件夾? – Philipp 2011-08-17 10:45:43

+0

文件夾及其中的文件。 – lollancf37 2011-08-17 10:49:36

+0

和(你)是否嘗試添加它們? – Philipp 2011-08-17 11:04:21

回答

11

嘗試使用source_group命令。調用add_executable後添加source_group語句來構建你的項目,你想,例如:

source_group("test\\blabla" FILES file1.cpp file2.cpp) 
2

對於Visual Studio:確保所有文件名都是唯一的。編譯dir/file.cpp的結果將爲obj/file.obj。當編譯器編譯otherdir/file.cpp時,結果將爲obj/file.obj - 之前的目標文件將被覆蓋。在VS 2008和更早版本中,情況就是這樣,我懷疑它在VS 2010中仍是這種情況。

我也按照您的方式組織源代碼。我最終使用了以下命名方案:如果源文件的路徑是Dir/Subdir/AnotherSubDir/File.cpp,那麼我會將文件命名爲Dir/Subdir/AnotherSubdir/DirSubdirAnotherSubdirFile.cpp。醜陋?是。但它擊敗了一個不會鏈接的項目,並且很容易找出文件名應該是什麼。我想你可以在文件上添加一個序列號,但我認爲它會更醜。另外,如果您忘記將文件名稱設置爲唯一,則錯誤不是顯而易見的。特別是當你累了,你的未婚夫/妻在等待......

4

對於分組在VS,你可以在使用的CMake這樣的項目(VER後2.8.3)

//turn on using solution folders 
set_property(GLOBAL PROPERTY USE_FOLDERS ON) 

//add test projects under 1 folder 'Test-projects' 
FOREACH(TEST ${TESTS_LIST}) 
    add_test(NAME ${TEST} COMMAND $<TARGET_FILE:${TEST}>) 
    set_tests_properties(${TEST} PROPERTIES TIMEOUT 1) 
    set_property(TARGET ${TEST} PROPERTY FOLDER "Test-projects") 
ENDFOREACH(TEST) 
-2

接受的解決方案不適合的Xcode工作爲Xcode中6.然而,有一個簡單的解決方法:

  1. 從您的Xcode項目 刪除源文件的引用(在工具條中刪除它們,然後選擇「刪除參考」)。
  2. 添加根文件夾,確保選中「創建組」,然後選擇 所需的目標。

田田!現在你的文件應該與Finder中的文件夾結構相匹配。