我有兩個可執行文件必須在同一個項目中共享的代碼(一個構建命令會構建它們)。此代碼包含#ifdef
預處理程序語句,這些語句會更改其在每個項目中的工作方式(將命令行宏定義用作開關)。將兩個目錄合併爲一個虛擬目錄以進行編譯/別名包括目錄
來源是摘要從某種意義上說,有些標題丟失。例如,共享文件Application.cpp
可能包含名爲gui/MainWindow.h
的文件,該文件在共享目錄中不存在,但存在於可執行源目錄中。或者它可能包含名爲gui/Local.h
的文件,該文件確實存在於共享目錄中。
本質上我需要gui
路徑是兩個位置的組合。
關於unix,我之前通過設置一系列文件鏈接來完成此操作,但是此項目現在將窗口作爲目標(Visual Studio)。另外,我知道如何使用共享目錄結構和設置編譯器包含開關來實現這一點,但我希望有一種更簡單的方法。
任何想法?
我使用CMake作爲編譯器生成代碼,使用GCC和Visual Studio作爲編譯器。
我已經看過爲預處理器定義一個目錄,但#include
指令很遺憾不能組合幾個標記來創建文件名。一個名字的作用,這可能是一個選項,讓cmake爲所有共享文件名吐出宏。
我知道這種方法,但在這種情況下,它感覺不太正確。這將是對項目當前目錄結構的巨大改變/分歧。 – 2011-05-04 07:06:44
我希望你可以保持目錄結構相同,並使用include路徑包含正確的目錄,就像你使用#defines一樣。包含路徑將允許您爲每個項目設置一個「gui」目錄,併爲所有項目提供一個共享的「gui」目錄。 – Bids 2011-05-04 07:11:30
目前我們的設置是一個包含子文件夾的通用包含目錄,include/lib爲了執行共享包含,我必須有像include/exec_a/include/gui這樣的目錄,但是'exec_a'是一種一個無意義的include,並且這個結構也必須在'src'目錄中重複。我知道這會起作用,它對我們當前的目錄結構並不那麼友好。 – 2011-05-04 07:19:51