我目前正在试图找出是否有可能为两个不同的本机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