2012-10-12 56 views
1

說我有一個包含10個項目(名爲proj1到proj10)的sln,而proj1是生成EXE文件的默認項目。在Visual C++中的文件夾結構,當有很多項目相互依賴

我的問題是:如何放置'包括'文件夾? 我的意思是如果proj2使用proj3(即包括它的頭文件並鏈接它的lib文件),如何放置'include'文件夾?

有兩種做法:

  1. 地方所有的頭文件和lib文件在不同的根文件夾是在項目

  2. 使每一個項目的自我接近同一水平,並且其他想要使用這個項目的項目應該照顧包含路徑和鏈接路徑。原因我們應該給規則以每個項目(e.x。每個項目必須在根文件夾中「包括」文件夾和「LIB」文件夾)

任何建議的佈局? 謝謝

回答

1

說到Visual Studio,我不喜歡你建議的兩種方法中的任何一種,儘管我的方法與你的方案#2關係最密切。我想組織它是這樣的方式:

<SolutionRoot> 
    <Project1> 
    project1.vcxproj 
    someheader.h 
    somesource.cpp 
    <Project2> 
    <Project3> 
    <Project4> 
    <Project5> 
    application.sln 

萬一這不是很明顯,這是一個準目錄列表顯示一些項目的文件夾和鹼溶液文件。

所有新項目都只是使用Visual Studio的默認設置添加到解決方案中。試圖違背這一點,使項目像Linux項目一樣工作(libinclude,src)只是最終導致你的悲傷,所以不要這樣做。

現在,我在每個項目上設置我的「額外包含」路徑爲$(SolutionDir)。然後,如果我想包括從PROJECT1東西:

#include "Project1/someheader.h" 

這樣做的好處是,你不要弄亂你的「額外包括」,所以很容易一眼看出什麼外部包括的項目有。

至於鏈接到lib文件,爲什麼不利用Visual Studio的項目引用功能。老實說,你的生活會更容易。只需將它連接起來,以便Project2引用Project1, ...然後,您不必擔心庫和鏈接器路徑。您僅針對解決方案樹之外的工具包(例如,例如分發,例如libpngopenssl)。

同樣,您可以釋放該設置,使其僅顯示解決方案之外的鏈接。另一個好處是如果你使用引用,你的構建順序是隱式定義的。

0

我會去第一個解決方案。它使項目設置變得簡單。作爲我們處理的C++項目,我們總是將頭文件放在一起。

相關問題