> The reason I'm asking this question is because of how I handle unit > tests in CMake right now. Instead of just defining an executable > target for the test and then adding a link dependency on the library > containing the class or set of classes to be tested, I am manually > pulling in the CPP and H file into the test target and building them > inline with the test code. This is to support mocking (I can't mock > objects already compiled into a static library). As such, I need the > transitive includes and defines, but I do not want the transitive link > libraries.
Okay with that context what I suggested isn't going to completely solve the problem. It is actually possible to link with your static library and a mock implementation by making the symbols that you want mock in the library weak. Then when you link the linker will choose the strong (the mock) implementation in preference to the weak implementation. It probably isn't desirable to have weak symbols in a shipping library just to make unit testing easier so you could build two versions of the library (one with weak symbols and one without). This would allow to use target_link_libraries() but not get link conflicts between your mock implementation and the real implementation. However Petr's suggestion also sounds good (although I haven't tested it). -- Powered by www.kitware.com Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ Kitware offers various services to support the CMake community. For more information on each offering, please visit: CMake Support: http://cmake.org/cmake/help/support.html CMake Consulting: http://cmake.org/cmake/help/consulting.html CMake Training Courses: http://cmake.org/cmake/help/training.html Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html Follow this link to subscribe/unsubscribe: http://public.kitware.com/mailman/listinfo/cmake