I have a project that I would like to unit test in Visual Studio 2013. I have changed the project type to a static library (lib) after getting some linker errors and reading the answer to this question.
I do not understand the underlying mechanisms of compiling and linking in c++. In changing my project to a static library, it seems I have lost the ability to specify additional dependencies, which is a pain because I need three libs for my main project that I would like to test.
What should I do to test this project, is there a way to make my project a static library and still specify additional dependencies?
Answer
Static library is a collection of object files. No linker involved. Dependencies are not being resolved. It only requires headers to build.
Now, when you finally create an executable (or a dynamic library), you should link all the necessary dependencies.
However, note that additionally to the "classic" build process described above, Visual Studio IDE provides abstractions (convenient, but sometimes a bit misleading, especially for novices), called "Project references" and "Project dependencies". There are options to make a static library "depend" on other static libraries. Also, executable can depend on that first static library. When "Link dependencies" is enabled, Visual Studio will resolve entire dependency chain recursively and link all the necessary into your executable.
See also:
No comments:
Post a Comment