[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: MAKECMDGOALS and spaces
From: |
Kaz Kylheku (gmake) |
Subject: |
Re: MAKECMDGOALS and spaces |
Date: |
Wed, 17 Feb 2021 21:56:15 -0800 |
User-agent: |
Roundcube Webmail/0.9.2 |
On 2021-02-17 09:35, Sébastien Hinderer wrote:
Hello,
Kaz Kylheku (gmake) (2021/02/13 11:44 -0800):
Pardon the pontificating, but 've never worked with or seen
a Makefile that had spaces in a target name; that kind of
thing is best avoided.
I don't like spaces especially, either. But it seems it's not really
possible to claim one fully supports building on Windows if not
supporting directories with spaces in their names. For instance, one
may
want to install to a subdirectory of "C:\Program files". In such a
scenario, one thing that would seem natural to do, at least to me, is
to
have targets to creat the required directories.
I am suspecting make would have a hard time handlign this properly, but
if there is any recommendation I'd be very interested.
There is a recommendation.
Don't even think about using make for installing programs on
Microsoft Windows.
Use a proper installer, like Nullsoft's NSIS or whatever.
Firstly, Make doesn't have the installer wizard GUI support
that users expect.
Secondly, what are the deliverables then? A .zip file that the
user extracts, to a folder full of files and a Makefile? How
does the user run that: there is no make utility installed.
To be able to click on the Makefile to run it, it needs an
extension like Install.mak. That has to be associated, by
the Explorer shell, with the make program.
Third, never mind all that Let's examine what is installation.
Installation is not building; it consist mostly of unconditionally
copying some materials into certain destinations, and possibly
tweaking some system configuration settings (something in the
Registry, or environment variables). What is make? A tool for
incrementally updating out-of-date dependencies. Installation
cannot do that; even if the already installed foo.exe has a newer
modification timestamp, a repetition of the installation steps
must overwrite it.
On Unix, we often have an install: target, because, why not?
There are sophisticated users who build from source and have
all the tools involved.
Most users of GNU/Linux distros don't install programs using
anything resembling "make install".
The convention is that "make install" targets must obey the
DESTDIR convention: if a DESTDIR variable is defined, it
gives the prefix for installation. Distro builds use this
to install to a temporary directory, from which they create
a package (or multiple packages: devel package, run-time
package, doc package. ...)
A distro build will not pull a crazy stunt on you, like
hand you a DESTDIR that expands to a path with spaces.
- Re: MAKECMDGOALS and spaces, (continued)
- Re: MAKECMDGOALS and spaces, Sébastien Hinderer, 2021/02/17
- Re: MAKECMDGOALS and spaces, David, 2021/02/17
- Re: MAKECMDGOALS and spaces, Sébastien Hinderer, 2021/02/19
- Re: MAKECMDGOALS and spaces, David, 2021/02/19
- Re: MAKECMDGOALS and spaces, Eli Zaretskii, 2021/02/20
- Re: MAKECMDGOALS and spaces, Marco Atzeri, 2021/02/20
- Re: MAKECMDGOALS and spaces, Paul Smith, 2021/02/20
- Re: MAKECMDGOALS and spaces, Stefan Monnier, 2021/02/20
- Re: MAKECMDGOALS and spaces, Sébastien Hinderer, 2021/02/22
- Re: MAKECMDGOALS and spaces,
Kaz Kylheku (gmake) <=
- Re: MAKECMDGOALS and spaces, Sébastien Hinderer, 2021/02/19
Re: MAKECMDGOALS and spaces, Paul Smith, 2021/02/14