I develop a shared library that gets imported into a number of applications 
(scattered across a number of different repositories).  To aid in testing we 
provide some mocks and fakes, made available by a cmake export files.

This works okay, but it isn't right: google mock doesn't guarantee binary 
compatibility if compile flags are not exactly the same, and less so if the 
version is different between our library and the application. There are a 
couple new features in google mock that I'd like to use, but I cannot upgrade 
without also upgrading all the users of the library at the same time: this is a 
difficult task (both technically and politically)

I know I'm going to have to face the technical and political issue, but I'd 
like to solve this problem completely so I don't hit it again. The solution I'd 
like to install the .cpp files, and have cmake add those files to the build, 
but only build the ones that are actually used in the project.  The actually 
used is somewhat important as building the library for the mocks is fairly 
expensive.

That is in the main CMakeLists.txt
      Find_package(MyLibrary)
Then in a test someplace
      Target_link_libraries(SomeTest, MyLibraryMock)

I'm stuck though, I can't think of any way to actually implement this.  Can 
anyone offer some suggestions, or a different way to accomplish this?

The idea of putting the functions inline in the header will not work: we have 
benchmark data showing that doing this adds significantly to the compile time 
of the project when doing an incremental build (the TDD cycle becomes too long).



-- 

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

Reply via email to