1. 程式人生 > >Visual C++ 設置適合自己的解決方案目錄結構

Visual C++ 設置適合自己的解決方案目錄結構

自己 建立 pan 去掉 ase 文件目錄 ofo src 目標

Visual C++ 使用解決方案來管理項目,項目之間還可能有依賴關系,設置適合自己的解決方案目錄結構,便於代碼的管理、程序的發布。

下面開始一個虛擬解決方案設計:
假設此解決方案有應用程序項目A,動態鏈接庫項目B,靜態鏈接庫項目C,其中項目A依賴項目B和項目C,則構建解決方案項目結構如下圖所示:
技術分享圖片
而目錄結構則如下圖所示:
技術分享圖片
Bin:存放所有動態鏈接庫和可執行程序,分Debug和Release兩個版本
A:應用程序項目文件夾
B:動態鏈接庫項目文件夾
C:靜態鏈接庫項目文件夾
Doc:存放項目文檔
Include:存放引用庫的頭文件
Lib:存放動態鏈接庫的導入庫、靜態鏈接庫

Temp:存放臨時生成文件,其中Compile存放編譯時的中間文件,Link存放鏈接時的輸出文件
除了Doc需要自己建立外,其他文件夾無需手動建立。


項目結構創建步驟:
1.創建一個新應用程序項目,名稱A,解決方案名稱為Work,如下圖所示:
技術分享圖片
2.在"解決方案資源管理器"右鍵"解決方案Work","添加"→"新建項目"→"Win32"→"Win32 項目",名稱為B,在"應用程序設置"選擇"DLL"和"空項目";
3.同樣的方式添加一個"Win32項目",名稱為C,在"應用程序設置"選擇"靜態庫",去掉"預編譯頭"選項;
4.項目結構如下圖所示:
技術分享圖片


項目屬性設置

配置項目A的屬性
1.配置"所有配置","常規",
輸出目錄:$(SolutionDir)Temp\Link\$(ProjectName)\$(PlatformName)\$(ConfigurationName)
中間目錄:$(SolutionDir)Temp\Compile\$(ProjectName)\$(PlatformName)\$(ConfigurationName)
技術分享圖片
2."生成事件"→"生成後事件",
命令行:echo D | xcopy "$(TargetPath)" "$(SolutionDir)Bin\$(PlatformName)\$(ConfigurationName)" /y

3."C/C++"→"常規",
附加包含目錄:$(SolutionDir)Include
4."鏈接器"→"常規",
附加庫目錄:$(SolutionDir)Lib\$(PlatformName)
5."調試",
命令:$(SolutionDir)Bin\$(PlatformName)\$(ConfigurationName)\$(TargetFileName)
工作目錄:$(SolutionDir)Bin\$(PlatformName)\$(ConfigurationName)

配置項目B的屬性
1.配置"所有配置","常規"下,
輸出目錄:$(SolutionDir)Temp\Link\$(ProjectName)\$(PlatformName)\$(ConfigurationName)
中間目錄:$(SolutionDir)Temp\Compile\$(ProjectName)\$(PlatformName)\$(ConfigurationName)
2.【VS2008】配置"Debug","鏈接器"→"常規"下,
輸出文件:$(SolutionDir)Temp\Link\$(ProjectName)\$(PlatformName)\$(ConfigurationName)\$(ProjectName)d.dll
【VS2010及以上】配置"Debug","常規"下,
目標文件名:$(ProjectName)d
3.配置"所有配置","生成事件"→"生成後事件"下,命令行:
echo D | xcopy "$(TargetPath)" "$(SolutionDir)Bin\$(PlatformName)\$(ConfigurationName)" /y
echo D | xcopy "$(TargetDir)$(TargetName).lib" "$(SolutionDir)Lib\$(PlatformName)" /y
echo D | xcopy "$(ProjectDir)B.h" "$(SolutionDir)Include" /y
第三行為xcopy動態庫的頭文件,實際要根據所需進行改動名稱。

配置項目C的屬性
1.配置"所有配置","常規"下,
輸出目錄:$(SolutionDir)Temp\Link\$(ProjectName)\$(PlatformName)\$(ConfigurationName)
中間目錄:$(SolutionDir)Temp\Compile\$(ProjectName)\$(PlatformName)\$(ConfigurationName)
2.【VS2008】配置"Debug","管理員"→"常規"下,
輸出文件:$(SolutionDir)Temp\Link\$(ProjectName)\$(PlatformName)\$(ConfigurationName)\$(ProjectName)d.lib
【VS2010及以上】配置"Debug","常規"下,
目標文件名:$(ProjectName)d
3.配置"所有配置","生成事件"→"生成後事件"下,
命令行:
echo D | xcopy "$(TargetPath)" "$(SolutionDir)Lib\$(PlatformName)" /y
echo D | xcopy "$(ProjectDir)C.h" "$(SolutionDir)Include" /y
第二行為xcopy靜態庫的頭文件,實際要根據所需進行改動名稱。

最後設置項目生成順序
菜單欄→"項目"→"項目依賴項",項目A依賴於B和C,如下圖所示:
技術分享圖片
編譯生成,可看到如下結果:
技術分享圖片
用tree命令看下文件夾結構:
技術分享圖片


其他網上關於目錄結構配置資料:
1.VC 2005 解決方案的目錄結構設置和管理 http://blog.csdn.net/rogeryi/article/details/1481923
2.VC項目管理:目錄結構 http://www.fancystar.org
3.VS2008中VC項目文件目錄的管理 http://qimo601.iteye.com/blog/1059299
4.研發規範-VC http://wenku.baidu.com/view/26f6c789680203d8ce2f2414.html

再分享一下我老師大神的人工智能教程吧。零基礎!通俗易懂!風趣幽默!還帶黃段子!希望你也加入到我們人工智能的隊伍中來!http://www.captainbed.net

Visual C++ 設置適合自己的解決方案目錄結構