無標題文章

分析

在操作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

操作順序

  1. 創建文件夾 Sticker\src
  2. 創建一個空的解決方案 Sticker.sln ,放入 Sticker\src 中
  3. 創建項目 Sticker
  4. 屬性 --> 配置 設定為“所有配置”,這樣可以同時設定 debug\release 下的配置
  5. 配置屬性 --> 常規 --> 中間目錄: $(SolutionDir)..\temp\compile$(ConfigurationName)
  6. 配置屬性 --> 常規 --> 輸出目錄: $(SolutionDir)..\temp\link$(ConfigurationName)
  7. 配置屬性 --> C/C++ --> 常規 --> 附加包含目錄: "$(SolutionDir)..\3rd\include"
  8. 配置屬性 --> 鏈接器 --> 常規 --> 附加庫目錄: "$(SolutionDir)..\3rd\lib$(ConfigurationName)"
  9. 配置屬性 --> 鏈接器 --> 輸入 --> 附加依賴項: xxx1.lib xxx2.lib xxx3.lib
  10. 配置屬性 --> 生成事件 --> 生成后事件 --> 命令行:
    md $(SolutionDir)..\bin$(ConfigurationName)
    copy $(TargetPath) $(SolutionDir)..\bin$(ConfigurationName)
    copy $(SolutionDir)..\3rd\dll$(ConfigurationName) $(SolutionDir)..\bin$(ConfigurationName)
  11. 配置屬性 --> 調試 --> 命令: $(SolutionDir)..\bin$(ConfigurationName)$(TargetFileName)
  12. 配置屬性 --> 調試 --> 工作目錄: $(SolutionDir)..\bin$(ConfigurationName)\
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容