On 21-12-2011 0:30, John Labenski wrote:
>> WxStedit becomes part of wxLua, using an include.
>> But what if there is more flavors  of wxWidgets (univ, unicode etc. ).
>> How will i now what was compiled in what fashion?
> I give my out-of-tree build dir the complete build name, compiler,
> 32/64... to fully describe it.
Oke, but that i have to explain to users wanting to use wxart2d with wxlua.
Saying if you want to compile different versions( deb/uni) of wxart2d with 
wxLua, you have to make 
paths like this and that, else i don't know how to detect it.
And on Linux, imagine installing wxLua, what is it (unicode or not etc.)
I find my way out, but for the starting developer it is all to complex. They 
think configure/make 
install.
Which is close enough to cmake-gui/configure/make install.
On windows it is always more XXX_ROOT_DIR driven, but even there install is 
possible.

>
>> Or i need to switch over to the same big project approach with includes, in 
>> that case it does not
>> matter, since it is all compiled as one.
>> So no more find packages (and install) for wxstedit and wxlua in that case. 
>> A bit against Cmake its
>> FindXXX method, but then again it is easier.
> 1) The FindXXX methods could be nice, but for small libraries like
> wxstedit seem like overkill.
Yes i get that. That is why for wxCode like stuff ( just one lib), your 
approach might be better.
But if others start installing the same libraries (on Linux), and i would 
install wxLua/wxStedit as 
part of wxart2d, it becomes scary.

>
> 2) Simply adding the sources to your CMake project ensures that they
> are built *exactly* the same as your project and the dependencies work
> great if anything gets updated.
>
> 3) An alternative would be to create a USE_wxStEdit.cmake file in the
> build dir that another app/lib would call
> INCLUDE("USE_wxStEdit.cmake") to have the correct definitions,
> variables for libs, and whatnot set.
That is what FindXXX.cmake + UseXXX.cmake is about i think.
Maybe sometimes like in wxCode, the FindXXX is not really needed, and only the 
last will do.

>
> I think for me #2 and #3 should suffice. The FindXXX requires too much
> information that is not provided by the default FindwxWidgets.cmake
> script (version, unicode, debug). #3 is dead simple, the generated
> file in the build dir contains exactly what is needed to link to that
> library which is known when it's configured. (OpenCV does something
> like this).
Right, i think the generalized approach of Find_Package in Cmake, is working 
with XXXConfig.cmake.
The generalized FindPackage uses that file. And together with UseXXX it is 
complete.
Which for wxart2d i do generate, using the assembled lists like you do.
I somehow feel that what you suggest is the same, but less formal. The major 
ingredient, is to have 
such a file (call it XXXConfig.cmake), with the settings.
Find_Package only looks for paths where it can be found.

I myself do something in between (still have a FindwxArt2D.cmake but should not 
be needed) :

http://wxart2d.svn.sourceforge.net/viewvc/wxart2d/trunk/wxArt2D/packages/wxart2d/share/wxart2d/FindwxArt2D.cmake

See INCLUDE(${WXART2D_DIR_SHARE}/wxArt2DConfig.cmake)

Used like:

FIND_PACKAGE( wxArt2D )
IF( WXART2D_FOUND )
     INCLUDE(${WXART2D_USE_FILE})

>
> You may be interested in this, I have a wrapper FIND_WXWIDGETS()
> function to give much better info about why wxWidgets wasn't found. I
> also find the version number and get linking to stc/scintilla right
> for 2.8/2.9.
> http://wxlua.svn.sourceforge.net/viewvc/wxlua/trunk/wxLua/build/CMakewxAppLib.cmake?revision=33&view=markup

Yep my own FindwxWidgest, sets thing like lib name pre/post stuff variables to 
use by the user.
That is how i synchronize libraries to wxLua and wxWidgets looking at how they 
are named.
I also, like you do, have functions, to assemble lists of what was added in 
terms of libraries and 
includes, defines etc.
(wxart2dMacros.cmake).

http://wxart2d.svn.sourceforge.net/viewvc/wxart2d/trunk/wxArt2D/packages/wxart2d/share/

I needed that to later generate a cmake configure file for users of the 
software.
I still need the build.cfg file (wxwidgets produces that), and seeing your 
trick to get version.h 
info, i think that is better, will copy that ;-)
And other things you talk about, might be interesting for me too.

> I really like linking together the CMake files since you get a great Visual 
> Studio or Code::Blocks 
> project that you can use to build, debug, etc... The only downside is that 
> rebuilding cleans a 
> little more than it should. They need to have a 'clean' that only cleans the 
> current project, not 
> every dependent project. 

That is right, i also do like to have everything in one. And sofar i did it 
using 
"include_external_msproject", which works for VC.
code blocks i just included into it into the workspace.
But like you do, it just is one big pile of code producing libraries etc. Which 
is simple, and often 
simple is best.
I am just trying to oversee the consequences, where it might go wrong.

>> We best find a single Cmake approach for wxCode components. Looking around 
>> there, it seems you
>> Cmaked yours already.
>>
>> What is your idea about all this?
> There are some other projects in wxCode that I would have liked to
> use, but was afraid to get involved in their build system. I think a
> clear set of CMakeLists.txt files to allow you to link a few wxCode
> projects together with your own executable makes a lot of sense.

To me too!
But if every wxCode module produces a library, there might be a problem at 
install stage.
That is what i try to figure out.

>   I
> have tried to make everything in CMakewxAppLib.cmake and
> CMakeFunctions.txt (I want to rename both of them eventually) so they
> don't overwrite anybody's settings.
>
> You'll notice that I have some wrapper functions for ADD_LIBRARY() and
> ADD_EXECUTABLE(), ADD_LIBRARY_FULL() and ADD_EXECUTABLE_FULL() which
> keep track of what has been added so that you can make lists of them
> and do a lot of interesting things. It would not even be so hard to
> setup an automated build system.
Yep, will look how you did it, maybe i can improve my own versions, or just use 
yours.
It helps to see how others solve a similar problem.
_ADD_SUBDIRECTORY did not know about the underscore, to call what i think is 
the original version??
That's a nice trick.

>
> I am open to suggestions about the two files I have above. I will add
> a function to create a wxlike-libname, wx{your-lib-name}[u][d]-2x...
> to make that part easier.

Maybe have a look at my FindwxWidgets, it seems you use the one from Cmake 
itself.
Which i think is not very good. If we manage to sync up a common FindwxWidgets 
delivering what we 
need, we might be able to get it into Cmake and/or wxCode
Like your WX_HASLIB stuff, is very much like i do search for all available 
libs, unless i missed 
something.
Maybe add your component checking in there and have something which can be used 
in general.

>
> Eventually, we can add a CMakeLists.txt at the root of
> wxCode/components to make it very simple to load all of them that have
> CMakeLists.txt.
I get it.
> In fact, I already do this, but I also include wxLua
> and two other personal projects. What stops people (including myself)
> from using wxCode components is that it's hard to learn how to build
> other people's projects and if we can unify them everything becomes
> simple and the wxCode projects can be tried with little effort.
I am all with you.
We need something simple. The package system from Fransesco did not work out.
Hopefully this is the solution.

Thanks,

Klaas



------------------------------------------------------------------------------
Write once. Port to many.
Get the SDK and tools to simplify cross-platform app development. Create 
new or port existing apps to sell to consumers worldwide. Explore the 
Intel AppUpSM program developer opportunity. appdeveloper.intel.com/join
http://p.sf.net/sfu/intel-appdev
_______________________________________________
wxlua-users mailing list
wxlua-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wxlua-users

Reply via email to