Wow, now you got me. That is why I love discussions. Thanks for your insight, now I (my hard-as-rock head) can understand why this is not feasible.
As a side note I think this should be in a list, maybe in the wiki, to advise others no to do this. A list of 'do not even think about this'. I'm sorry for the incovenient. Kind regards, Hilton On Thu, 11 Feb 2010 02:26:27 -0500 Mike Jackson <mike.jack...@bluequartz.net> wrote: > And what happens when a project wants to use my library? That > project must now use Cmake and your macro. What if a project > downstream can not use Cmake to define those macros? What then? > > Mike Jackson > > On Feb 11, 2010, at 2:04, Hilton Medeiros > <medeiros.hil...@gmail.com> wrote: > > > 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.ehrlic...@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 > >> > > > > _______________________________________________ > > 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 _______________________________________________ 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