我目前正在試圖找出是否有可能爲兩個不同的本機Visual-C++項目(具有完全相同的編譯器設置)分享他們的中間文件(OBJ,PCH,...)在C++項目之間共享中間文件?
一個例子應該有所幫助:
這是一個正常的設置:
PROJECTS \ P1 \ p1.vcproj; p1.cpp; ...
\ Release_Intermediate_Dir \ p1.obj
\ tool1.obj
\ P2 \ p2.vcproj; p2.cpp; ...
\ Release_Intermediate_Dir \ p2.obj
\ tool1.obj
\ COMMON \ tool1.cpp; ...
這個怎麼樣設置:
PROJECTS \ P1 \ p1.vcproj (uses: p1.cpp; p1_main.cpp)
\ p1_test.vcproj (uses: p1.cpp; p1_test.cpp)
\ Release_Intermediate_Dir \ p1.obj (used by both projects p1 and test)
\ tool1.obj
\ p1_main.obj (only p1.vcproj)
\ p1_test.obj (only p1_test.vcproj
\ COMMON \ tool1.cpp; ...
我可以在兩個C++項目中使用相同的中間文件夾,從而直接共享obj
文件嗎?
或者我會一直需要一個額外的靜態lib項目? (據我瞭解,靜態庫是just a container爲obj
文件。)
我爲什麼要這麼做?看看這個博客文章:Writing Unit Tests in Visual Studio for Native C++。
它使用一個靜態庫爲了有兩個不同的可執行文件(主要功能,如果你願意)的唯一目的。 (忘記託管/ CLI的東西。)這意味着在你的解決方案中有3個項目(必須維護三個項目),當你真的只想要兩個項目共享相同的編碼設置,但使用不同的主/啓動索具。
其實它更多的是對稱關係恕我直言。兩個項目都共享代碼。 (相同的編譯工件。)但鏈接器將鏈接每個不同的東西。我對automake並不熟悉:您可以添加指向您所指的功能的鏈接嗎? –
我很想去,但恐怕automake手冊不是那麼具體。我已經添加了一個例子,它將如何在automake中解決。 – thiton