本文提供了一個在Windows環境下使用Visual Studio 2013編輯現有源代碼並且保持目錄結構的方法。
本文使用VS2013中文社區版做示例(本版本為免費版,可在VS官網下載),其他版本的VS操作方式類似。
- 打開VS2013,選擇【菜單】-【文件】-【新建】-【從現有代碼創建項目】
- 選擇項目類型:Visual C++
- 項目文件位置:創建完成后會在這個目錄生成sln,suo,vcxproj,filters和user等VS解決方案和項目文件,這個必須和源代碼的根目錄保持一致,否則不能導入文件夾結構。
- 項目名稱填所需項目
- 最后去除勾選【在解決方案資源管理器中顯示所有文件】,避免文件太多
- 因為代碼是Linux代碼,並不需要在Windows下編譯,所以選擇使用外部生成系統即可
- 無需編譯的話,直接選擇下一步
- 完成項目生成向導
- 項目生成中,如果文件較多,會需要一些時間
- 如果源文件來源於網絡映射盤(比如筆者這里使用的是Linux的Samba共享磁盤),會彈出安全警告,去除勾選選擇確定即可。
- 項目創建好后,在解決方案資源管理器中會出現所有篩選過后項目目錄的源文件,是未分文件夾的。如果看不到解決方案資源管理器,可以在【菜單】-【視圖】中打開。
- 上面不分文件夾的源文件並不是我們想要的,如果需要分文件夾,在解決方案資源管理器中點擊【顯示所有文件】圖標,如下圖所示。點擊之后,會出現文件夾。並且會在文件圖標上標示出該文件是否屬於項目文件。
- 如果源代碼路徑文件有更新,比如增加或者刪除文件,在解決方案資源管理器中點擊刷新按鈕,即可看到最新的文件狀態。如果要將新文件添加進項目進行管理,則在新文件上點擊右鍵,選擇【包括在項目中】即可,添加后文件圖標也會做出相應改變。
- 由於源代碼是Linux下,Linux的頭文件與VS默認的頭文件不一致,會導致很多頭文件找不到或者是不匹配,影響代碼提示和閱讀。解決方法是添加Linux的頭文件到Include路徑。下面是具體操作方法:
- 在解決方案資源管理器中右鍵項目,選擇【屬性】。
- 在彈出的屬性頁中,找到VC++目錄,其中的包含目錄填上Linux下的頭文件目錄。
- 關於Linux的頭文件如何獲得,可以在Linux下使用Samba服務端,在Windows上連接,將下面3個路徑復制到Windows系統相應目錄即可,最好linux下復制一個,就在windows下復制一份,否則一些文件可能會被后續的復制操作覆蓋。
-
1
2
3
cp -r /usr/include ~/1
cp -r /usr/lib/gcc/ ~/2 #這個目錄可能稍有變化,也許是/usr/lib64/gcc
cp -r /usr/local/include ~/3
-
- 復制完成后,將下面的路徑粘貼至VS中即可(64位),其中【D:\Code\Linux\Ubuntu\】為Windows下對應Linux的根目錄
1
2
3
4
5
6
7
8
D:\Code\Linux\Ubuntu\usr\include\c++\4.8;
D:\Code\Linux\Ubuntu\usr\include\x86_64-linux-gnu\c++\4.8;
D:\Code\Linux\Ubuntu\usr\include\c++\4.8\backward;
D:\Code\Linux\Ubuntu\usr\lib\gcc\x86_64-linux-gnu\4.8\include;
D:\Code\Linux\Ubuntu\usr\local\include;
D:\Code\Linux\Ubuntu\usr\lib\gcc\x86_64-linux-gnu\4.8\include-fixed;
D:\Code\Linux\Ubuntu\usr\include;
D:\Code\Linux\Ubuntu\usr\include\x86_64-linux-gnu;
- 修復VS中__cplusplus宏固定為199711L導致無法識別C++11新增特性的辦法
比如<unordered_set>頭文件中,定義了如下語句,導致VS包含的實際上是一個c++0x_warning.h的文件,無法真正識別unordered_set的實現:1
2
3
#if __cplusplus < 200311L
# include <bits/c++0x_warning.h>
#else
在網上找了很久,也沒找到修改VS內置__cplusplus宏的方法,只能曲線救國了,即將所有頭文件中200311L改成199711L即可,具體操作如下:
-
將復制到Windows下的頭文件路徑重新打包(比如:D:\Code\Linux\Ubuntu\)在Linux下解壓后執行:
sed -i "s/201103L/199711L/g" `grep "201103L" -rl *` - 執行后將源文件復制回來即可。
-
- 創建完成后項目文件目錄會生成以下項目文件,以后需要打開項目直接雙擊sln解決方案文件即可