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

Reply via email to