FLTK logo

Re: [fltk.coredev] CMake: add 'examples' to build [was: Something in progress? (table examples broken on Linux)]

FLTK matrix user chat room
(using Element browser app)   FLTK gitter user chat room   GitHub FLTK Project   FLTK News RSS Feed  
  FLTK Apps      FLTK Library      Forums      Links     Login 
 All Forums  |  Back to fltk.coredev  ]
 
Previous Message ]New Message | Reply ]Next Message ]

Re: CMake: add 'examples' to build [was: Something in progress? (table examples broken on Linux)] Albrecht Schlosser Aug 15, 2020  
 
On 8/15/20 4:18 AM Greg Ercolano wrote:
On 2020-08-14 17:15, Albrecht Schlosser wrote:

Please tell me where it's *documented* where all the executables and
libs (and Windows DLL's are created) so we can fix it.

	With regards to our own docs I concede there's not much,
	but that's not the point. There's a lot of small references
	all over the place in things not under our control, or unlikely
	to be changed after the fact:

		Video tutorials
		Books (like Stroustrup's)
		Document tutorials like Robert Arkiletian's,
		Educators that wrote tutorials frozen in PDFs for their classes
		My cheat page
		Documentation in other languages like Matteo Lucarelli's tutorials
		Online articles like http://matteolucarelli.altervista.org/fltk/fltk-linux59.pdf

	Basically things that are unlikely to go away, and will probably
	never be updated.

Sorry, I disagree. I see that such external docs exist, but if we wanted to make everything that's externally documented work in the future w/o changes then we couldn't use CMake at all and would have to stick with the bundled IDE files for all times. That's not going to work.

My strong belief is that we *must* change things now for a better future in one step and document these changes.

It's hard but it's a necessary step. Consider how Microsoft keeps their API's "forever" which makes them so convoluted and full of exceptions that no one can understand them and OTOH the "Apple way": they break their own API's and remove old API's many times (remember all the changes Manolo had to do for FLTK to *work* at all with newer macOS versions in the recent past).

We should strive to go a way in the middle: since we changed the *build system* anyway, let's do it now in one step when releasing 1.4.0 rather than keeping old cruft forever. This is only true for the build system which users must change anyway (not the FLTK API, of course).

	Another thing I think is important is where fltk-config and fluid
	end up, since those are often hard coded into developer's makefiles.
	And they're going to assume fltk-config is in the top level,
	and fluid in fluid/fluid.

Although we always recommended to build applications against the build directory (which has always been the source directory with autoconf/make), things have changed with the introduction of CMake:

(1) we allow and strongly recommend out of source builds

(2) we *should* recommend to use the 'install' target to install FLTK and build apps against *installed* FLTK versions. This would for instance simplify the issues we have with abi-version.h. This does not mean that it must be installed in a system directory, it can also be a local dir chosen by the user.

(3) whereever the built files (libs, fluid, fltk-config) are generated during the build process doesn't matter if (only) the required files are *installed* to a user selectable install directory.

(4) fltk-config will lose its importance if users build their applications with CMake as well which is *way* easier than using autoconf/make, BTW. CMake builds and installs config files the user can use which simplifies the configuration of their own apps even more.

	It's interesting that in that recent post where someone ran cmake
	in the top level directory, that actually gave a result very similar
	to the results of autoconf/configure, which I of course think is great!
	fltk-config did in fact end up in the top level dir, and even
	'cd examples; make' worked. That's cool!

No, it's not cool. If you run CMake in the source directory (with a "Makefiles" generator), CMake does not only add all the CMake stuff, they also overwrite Makefiles and other files that are in the git repo. If you do this on a source tree extracted from a tarball (snapshot) this destroys the original files and you can't recover from git. The only way is to extract the tarball again.

Believe me, it's a PITA. Or try it yourself: run CMake in the source directory as described above, then run autoconf/configure/make in the same directory. Have fun!

This is why the CMake guys strongly discourage running CMake in the source directory, and so do I. I don't want to imagine what user questions we will get when users start doing this: why does configure/make not work? See above for an explanation.

Honestly, I'd like to disallow running CMake in the fltk source directory to prevent such damage. There are recipes in the 'net on how to do this, but I'm not sure if this is necessary or wanted.

	It would be great if in the end, people wanting old autoconf/make results
	from cmake just have to remember to run:

		cmake [-D <OPTION>=xxx]

	..in the top level directory instead of 'configure', they can get the
	same results they used to.

Please not! See above.

...

Note: the interesting question is where the wrappers for the *examples*
apps are (see below for how to enable these). [..]

	So for example I tried bin/examples/tree-simple and it ran as expected, and didn't
	background itself the way it does with 'open bin/examples/tree-simple.app'.

	Works for me!

Thanks, that's good to know.

--
You received this message because you are subscribed to the Google Groups "fltk.coredev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to fltkcoredev+unsubscribe@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/fltkcoredev/53817d17-2eb2-8157-d9e1-57c750e223bb%40online.de.
Direct Link to Message ]
 
     
Previous Message ]New Message | Reply ]Next Message ]
 
 

Comments are owned by the poster. All other content is copyright 1998-2024 by Bill Spitzak and others. This project is hosted by The FLTK Team. Please report site problems to 'erco@seriss.com'.