分析
在操作vs的時候,發現它的解決方案文件夾目錄很復雜,便在網上查看一些資料,記錄下來,
基本是就是說解決方案下有一個同名的項目文件,
一個Debug文件夾,
一個Realise文件夾可能有include文件夾,
lib文件夾,
生成的程序放在debug文件下,
而子目錄的debug放的是log文件.
涉及到的配置:
.項目編譯時使用的中間目錄;
.項目鏈接的輸出目錄;
.項目編譯結束后,拷貝生成的 dll 和 lib 到指定目錄;
.項目編譯結束后,拷貝需要的 dll 到輸出目錄;
.設置項目的工作目錄;
.設置調試時執行的 exe 和工作目錄;
配置時使用到的一些宏:
ConfigurationName 配置名字,通常是Debug或者Release
IntDir 編譯器使用的中間目錄,產出obj文件
OutDir 鏈接器使用的輸出目錄
ProjectDir 項目目錄
ProjectName 項目名字
SolutionDir 解決方案目錄
TargetDir 目標輸出文件所在的目錄
TargetExt 目標輸出的擴展名
TargetFileName 目標輸出文件名,包括擴展名
TargetName 目標輸出名,不包括擴展名
TargetPath 目標輸出文件的全路徑名
下面以 Sticker 為例展示目錄結構設置的過程:
Sticker 目錄結構:
Sticker
+-- 3rd (第三方庫)
| +-- dll
| | +-- debug
| | +-- release
| +-- lib
| | +-- debug
| | +-- release
| +-- include
|
+-- src (源碼)
| +-- Sticker
| | +-- Sticker 項目的代碼
| +-- StickerLibrary
| | +-- StickerLibrary 項目的代碼
| +-- Sticker.sln
|
+-- xar (腳本)
| +-- Sticker
| +-- ...
|
+-- doc (文檔)
|
+-- bin (可執行文件)
| +-- debug
| +-- release
|
+-- temp (中間目錄)
+-- compile
| +-- debug
| +-- release
+-- link
+-- debug
+-- release
操作順序
- 創建文件夾 Sticker\src
- 創建一個空的解決方案 Sticker.sln ,放入 Sticker\src 中
- 創建項目 Sticker
- 屬性 --> 配置 設定為“所有配置”,這樣可以同時設定 debug\release 下的配置
- 配置屬性 --> 常規 --> 中間目錄: $(SolutionDir)..\temp\compile$(ConfigurationName)
- 配置屬性 --> 常規 --> 輸出目錄: $(SolutionDir)..\temp\link$(ConfigurationName)
- 配置屬性 --> C/C++ --> 常規 --> 附加包含目錄: "$(SolutionDir)..\3rd\include"
- 配置屬性 --> 鏈接器 --> 常規 --> 附加庫目錄: "$(SolutionDir)..\3rd\lib$(ConfigurationName)"
- 配置屬性 --> 鏈接器 --> 輸入 --> 附加依賴項: xxx1.lib xxx2.lib xxx3.lib
- 配置屬性 --> 生成事件 --> 生成后事件 --> 命令行:
md $(SolutionDir)..\bin$(ConfigurationName)
copy $(TargetPath) $(SolutionDir)..\bin$(ConfigurationName)
copy $(SolutionDir)..\3rd\dll$(ConfigurationName) $(SolutionDir)..\bin$(ConfigurationName) - 配置屬性 --> 調試 --> 命令: $(SolutionDir)..\bin$(ConfigurationName)$(TargetFileName)
- 配置屬性 --> 調試 --> 工作目錄: $(SolutionDir)..\bin$(ConfigurationName)\