isual 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)\$(ConfigurationName)
中間目錄:$(SolutionDir)Temp\Compile\$(ProjectName)\$(ConfigurationName)
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,如下圖所示:
編譯生成,可看到如下結果:
用tree指令看下檔案夾結構:
其他網上關于目錄結構配置資料: