VS 解決方案目錄結構設置


涉及到的配置:
項目編譯時使用的中間目錄;
項目鏈接的輸出目錄;
項目編譯結束后,拷貝生成的 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)\


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM