Hi, what approach is best-practise currently for testing internal parts of libs? E.g. by symbols (classes) are not exported by default?
In Calligra we have code that uses XYZ_TEST_EXPORT macros for those symbols which should be only exported in test-enabled builds, e.g. by defining COMPILING_TESTS to true and having code in the export header like #ifdef COMPILING_TESTS #if defined _WIN32 || defined _WIN64 # if defined(calligrasheetsodf_EXPORTS) # define CALLIGRA_SHEETS_ODF_TEST_EXPORT KDE_EXPORT # else # define CALLIGRA_SHEETS_ODF_TEST_EXPORT KDE_IMPORT # endif # else /* not windows */ # define CALLIGRA_SHEETS_ODF_TEST_EXPORT KDE_EXPORT # endif #else /* not compiling tests */ # define CALLIGRA_SHEETS_ODF_TEST_EXPORT #endif But when switching to generated export headers, using cmake's generate_export_header macro, this seems no longer an option. Grepping for TEST_EXPORT on lxr.kde.org points that this seems an older approach which only might have survived in the island of Calligra :) when the rest of KDE world evolved to something else? So what are others doing? The only place lxr.kde.org pointed out to use the *TEST_EXPORT approach was grantlee, which simply creates a separate file with the define that then is appended to the file generated with generate_export_header: http://lxr.kde.org/source/grantlee/templates/lib/CMakeLists.txt Seems a working hack which we could copy. But not sure if this is the best way and if this should not be done more generically? Cheers Friedrich