Zitat von Michael Wild <them...@gmail.com>:
On 11. Feb, 2010, at 15:40 , Hendrik Sattler wrote:
Zitat von Bill Hoffman <bill.hoff...@kitware.com>:
That said, you could have CMake configure a .h file that had this stuff
in it. It might be nice if the function did that automatically, as it
is almost the same code for every project. Then once your project was
built with CMake, you would install the configured .h files and other
build systems could still use the software.
OTOH, cmake is a build system, not a code generator.
This export stuff is so simple[1], why all the hassle to generate it?
HS
[1]: you only have too cases: Windows and gcc>=4. All compilers on
Windows use the same syntax.
Also refer to http://gcc.gnu.org/wiki/Visibility
...which can be even simplified to:
#if defined _WIN32 || defined __CYGWIN__
#ifdef PROJECT_EXPORT
#define DLL_PUBLIC __declspec(dllexport)
#endif
#else
#if __GNUC__ >= 4
#define DLL_PUBLIC __attribute__ ((visibility("default")))
#define DLL_LOCAL __attribute__ ((visibility("hidden")))
#endif
#endif
#ifndef DLL_PUBLIC
#define DLL_PUBLIC
#endif
#ifndef DLL_LOCAL
#define DLL_LOCAL
#endif
Note: __declspec(dllimport) is not used here as it is only to be used
when including a header file for a DLL. This needs a different
solution (some custom define) in the header, only.
You usually do not need DLL_LOCAL.
Additionally, if you want cross-language bindings, you may want an
additional symbols file, so the symbol names are simpler. You also
have to care about calling convention, then. So the defines above a
only a small part of the deal.
HS
_______________________________________________
Powered by www.kitware.com
Visit other Kitware open-source projects at
http://www.kitware.com/opensource/opensource.html
Please keep messages on-topic and check the CMake FAQ at:
http://www.cmake.org/Wiki/CMake_FAQ
Follow this link to subscribe/unsubscribe:
http://www.cmake.org/mailman/listinfo/cmake