Thanks, this pointed me in the right direction.

I ended up moving main() to it's own file so nothing depends on it, using a static add_library (project sources minus the main.cpp) and depend on that target from gtest exe project. Works like a charm.


I missed the discourse announcement, I'll use it in the future.


Best regards, cen


On 11/20/19 3:16 PM, Kyle Edwards wrote:
On Wed, 2019-11-20 at 00:54 +0100, cen wrote:
Hi

I have an existing c++ exe project which I want to test with gtest.
I
have not yet found an easy way to keep the project as is and test it
directly since gtest insists (obviously) to link against the code
being
tested. I found a smart answer on SO to link against object files
and
that works ok but it's messy and a lot of manual setup after cmake
project generation, probably impossible to automate in cmake.

The other quick way is to change the VS project output to a static
lib.
That also works but is a manual step which again not sure can be
automated at all. And there is a bigger issue hidden in here.. I
can't
link to this lib due to dual main() entry point.

So unless there is some smart workaround to keep project as an exe
and
get gtest to work, I guess the only remaining option is to separate
the
main() into a small bootstrap exe and then link against the rest of
the
program (which contains the actual testable logic) as a lib. Finally,
if
I understand correctly, using target_link_libraries will
automatically
set up the two projects as dependent and lib will always get built
before the main is run.
Check out the $<TARGET_OBJECTS:...> generator expression. This will let
you link directly against the object files built for the executable.

This mailing list is deprecated. Please post further discussion to
Discourse:

https://discourse.cmake.org/c/code

Kyle
--

Powered by kitware.com/cmake

Kitware offers various services to support the CMake community. For more 
information on each offering, please visit https://cmake.org/services

Visit other Kitware open-source projects at https://www.kitware.com/platforms

Follow this link to subscribe/unsubscribe:
https://cmake.org/mailman/listinfo/cmake

This mailing list is deprecated in favor of https://discourse.cmake.org

Reply via email to