天天看點

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

isual C++ 使用解決方案來管理項目,項目之間還可能有依賴關系,設定适合自己的解決方案目錄結構,便于代碼的管理、程式的釋出。

下面開始一個虛拟解決方案設計:

        假設此解決方案有應用程式項目A,動态連結庫項目B,靜态連結庫項目C,其中項目A依賴項目B和項目C,則建構解決方案項目結構如下圖所示:

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

而目錄結構則如下圖所示:

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

Bin:存放所有動态連結庫和可執行程式,分Debug和Release兩個版本

A:應用程式項目檔案夾

B:動态連結庫項目檔案夾

C:靜态連結庫項目檔案夾

Doc:存放項目文檔

Include:存放引用庫的頭檔案

Lib:存放動态連結庫的導入庫、靜态連結庫

Temp:存放臨時生成檔案,其中Compile存放編譯時的中間檔案,Link存放連結時的輸出檔案

除了Doc需要自己建立外,其他檔案夾無需手動建立。

項目結建構立步驟:

1.建立一個新應用程式項目,名稱A,解決方案名稱為Work,如下圖所示:

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

2.在"解決方案資料總管"右鍵"解決方案Work","添加"→"建立項目"→"Win32"→"Win32 項目",名稱為B,在"應用程式設定"選擇"DLL"和"空項目";

3.同樣的方式添加一個"Win32項目",名稱為C,在"應用程式設定"選擇"靜态庫",去掉"預編譯頭"選項;

4.項目結構如下圖所示:

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

項目屬性設定

配置項目A的屬性

1.配置"所有配置","正常",

輸出目錄:$(SolutionDir)Temp\Link\$(ProjectName)\$(ConfigurationName)

中間目錄:$(SolutionDir)Temp\Compile\$(ProjectName)\$(ConfigurationName)

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

2."生成事件"→"生成後事件",

指令行:echo D | xcopy "$(TargetPath)" "$(SolutionDir)Bin\$(ConfigurationName)" /y

3."C/C++"→"正常",

附加包含目錄:$(SolutionDir)Include

4."連結器"→"正常",

附加庫目錄:$(SolutionDir)Lib

5."調試",

指令:$(SolutionDir)Bin\$(ConfigurationName)\$(TargetFileName)

工作目錄:$(SolutionDir)Bin\$(ConfigurationName)

配置項目B的屬性

1.配置"所有配置","正常"下,

2.配置"Debug","連結器"→"正常"下,

輸出檔案:$(SolutionDir)Temp\Link\$(ProjectName)\$(ConfigurationName)\$(ProjectName)d.dll

3.配置"所有配置","生成事件"→"生成後事件"下,

指令行:

echo D | xcopy "$(TargetPath)" "$(SolutionDir)Bin\$(ConfigurationName)" /y

echo D | xcopy "$(TargetDir)$(TargetName).lib" "$(SolutionDir)Lib" /y

echo D | xcopy "$(ProjectDir)B.h" "$(SolutionDir)Include" /y 

第三行為xcopy動态庫的頭檔案,實際要根據所需進行改動名稱。

配置項目C的屬性

2.配置"Debug","管理者"→"正常"下,

輸出檔案:$(SolutionDir)Temp\Link\$(ProjectName)\$(ConfigurationName)\$(ProjectName)d.lib

echo D | xcopy "$(TargetPath)" "$(SolutionDir)Lib" /y

echo D | xcopy "$(ProjectDir)C.h" "$(SolutionDir)Include" /y 

第二行為xcopy靜态庫的頭檔案,實際要根據所需進行改動名稱。

最後設定項目生成順序

菜單欄→"項目"→"項目依賴項",項目A依賴于B和C,如下圖所示:

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

編譯生成,可看到如下結果:

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

用tree指令看下檔案夾結構:

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

其他網上關于目錄結構配置資料:

繼續閱讀