[CMake] Function for visibility definitions
Hilton Medeiros
medeiros.hilton at gmail.com
Thu Feb 11 02:04:27 EST 2010
Hello Christian,
thanks for the interest, let me explain:
## In your CMake file you could to do this:
...
include (VisibilityDefinitions)
add_visibility_definitions(PREFIX PROJECT)
...
##
// In your project source, this:
...
class PROJECT_EXPORTS ExampleClass {...};
...
//
It is really simple, the function will just add these
definitions, through CMake of course, in compile time like this:
g++ -DPROJECT_EXPORTS=__attribute__((visibility("default")))
-DPROJECT_PRIVATE=__attribute__((visibility("hidden")))
src/ExampleClass.cpp
But of course you won't see anything like this while compiling because
CMake shows only:
"Building CXX object CMakeFiles/example.dir/src/ExampleClass.cpp.o"
Also, by the signature of the function you could custom these
definitions just like you want them, like this:
add_visibility_definitions(PREFIX _MyLib
EXPORT_SUFFIX Export
PRIVATE_SUFFIX Private)
And in your source code:
class _MyLibExports ExampleClass {...};
class _MyLibPrivate ExampleClass {...};
Kind regards,
Hilton
On Thu, 11 Feb 2010 07:41:32 +0100
Christian Ehrlicher <Ch.Ehrlicher at gmx.de> wrote:
> Hilton Medeiros schrieb:
> > Thanks for pointing that mistake, I fixed it.
> >
> > About g++: g++ is gcc with -lstdc++
> >
> > What is wrong with a simple CMake file?
> > I know what is good about it, if CMake had it built in
> > neither me nor any CMake user would need to write neither a simple
> > header file nor a simple CMake file.
> >
> I don't see how this should work without a header file. How should i
> use those defines in my source at all?
> The better have a simple header-file...
>
>
> Christian
>
More information about the CMake
mailing list