簡體   English   中英

Visual Studio在一個解決方案中“同步”多個項目

[英]Visual Studio “synchronize” multiple projects within one solution


我正在Visual Studio中編寫自己的C ++項目庫(幾個項目由* cpp,*。h文件組成,而不是實際的.lib文件)。 這些項目中的每一個都位於單個Visual Studio“解決方案”中。

當我需要使用另一個項目中的代碼時,只需復制它即可。 但這是短期解決方案。 現在,我的庫的大小和功能都在增長,由於代碼重復,我最終得到了同一文件的數十種不同版本。

單一的解決方案可作為我//作為新想法的試驗場。 我正在開發項目而不是庫。 目前,它擁有約50個項目。

我正在Visual Studio 2015中工作。


可以說我有這樣的設置:

  1. DataIO項目位於*/Solution/#DataInputAndOutput/DataIO/DataIO.h
    由DataIO.h和DataIO.cpp組成
  2. Foo項目位於*/Solution/#Foo/Foo/Foo.h
    由Foo.h和Foo.cpp組成

DataIO.h:

#pragma once
#ifndef __DATA_IO_H__
#define __DATA_IO_H__
// ...

extern FILE * const logFile;

// Bunch of function declarations
#endif // !__DATA_IO_H__

我知道這不是“最小,完整和可驗證的示例”,但我的問題在於事物的后勤保障,而不是事物本身。 而且我相信我的描述就足夠了。


問題1:Foo.cpp#include "DataIO.h" (之所以可能,是因為我在Foo項目設置中添加了其他include目錄),但是每當我嘗試編譯Foo時,都會出現以下錯誤:每個函數都無法unresolved external symbolDataIO.h內部DataIO.h和一個外部變量。 如何解決此問題? 我是否需要創建一個DataIO.lib來使事情變得簡單?

我試圖將DataIO.hDataIO.cpp直接添加到Foo項目中(不要復制它,只需將其添加到項目中),但這似乎是一個壞主意...

最好的方法是將公共代碼分解到一個庫中,以便公共代碼駐留在一個地方。 然后讓您的項目使用庫-通過包含文件並與所述庫鏈接。

我建議在VS2015 +中嘗試新的“共享項目項目”。 一個共享項目項目是從字面上只是一組文件。 該項目本身不構建任何東西。 事實上,有一個共享項目項目沒有(或幾乎沒有),編譯或鏈接設置 - 這些設置都將引用共享項目項目項目。 當您從其他一些項目FOO引用共享項目工程,FOO的積累發生,因為如果共享項目工程的文件是引用項目的項目。

簡而言之,您可以設置共享項目以構建.libs,然后在Visual Studio中使用“項目引用”來自動設置鏈接。 我認為您在執行此操作時必須手動設置包含路徑。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM