Hi Joshua,
2018-03-15 4:18 GMT+01:00 Joshua Baergen <[email protected]>: > Hello, > > I'm attempting to implement link-time dependency injection. In brief, what > this means is that, for a library A that depends on B, we would normally > have: > > target_link_libraries(A B) > > However, when building unittests for A (done in a subdirectory), we > instead want: > > target_link_libraries(A MockB) > > I've spent a bunch of time looking through CMake documentation and I'm not > sure how to express this without resorting to manually specifying the link > line when A is in use. Could someone give me some guidance? > Since you want link-time choice I bet you should have a look to some kind of generator expression see doc here: https://cmake.org/cmake/help/latest/manual/cmake-generator-expressions.7.html genex may be used in target_link_libraries. for example if you can set some property on (all) your unit test target (I personnally do that globally by defining my own mytest_add_executable macro) set_target_properties(<YourTestTarget> PROPERTIES UNITTEST 1) then may be you can use some genex which check whether an executable if a unitest: set(GenEx_IsTest $<STREQUAL:$<TARGET_PROPERTY:UNITTEST>,1>) and then use some other genex using the previous one in target_link_libraries like here for automatic instantiation of source: https://cmake.org/pipermail/cmake/2015-January/059669.html I lack time to craft the complete example but I think it's doable with genex. It seems that others already played along this line: https://developer.blender.org/T46725 -- Eric
-- 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: https://cmake.org/mailman/listinfo/cmake
