I've written a makefile that contains a rule for generating additional makefiles to include. It seems to run fine with make - it tries to include the appropriate makefile, doesn't find it, so it generates it first. Then it runs the target(s) specified by the included makefile. But when I run it with qmake, it says "No rule to make target". I've boiled it down to this simple case:

Makefile:

include $(MAKECMDGOALS:%=%.mk)
%.foo:
    touch $@
%.mk:
    echo "$*: $*.foo" > $@

Run with make:

~$ make -f Makefile bar --debug=m
GNU Make 3.81
Copyright (C) 2006  Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.

This program built for x86_64-pc-linux-gnu
Reading makefiles...
Makefile:2: bar.mk: No such file or directory
Updating makefiles....
  File `bar.mk' does not exist.
 Must remake target `bar.mk'.
echo "bar: bar.foo" > bar.mk
 Successfully remade target file `bar.mk'.
Re-executing[1]: make -f Makefile bar --debug=m
GNU Make 3.81
Copyright (C) 2006  Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.

This program built for x86_64-pc-linux-gnu
Reading makefiles...
Updating makefiles....
Updating goal targets....
 File `bar' does not exist.
   File `bar.foo' does not exist.
  Must remake target `bar.foo'.
touch bar.foo
  Successfully remade target file `bar.foo'.
Must remake target `bar'.
Successfully remade target file `bar'.

Run with qmake:
~$ qmake -V -cwd -- -f Makefile bar --debug=m
qmake: *** cannot determine architecture from environment variable SGE_ARCH
           no default architecture set
GNU Make 3.82
Built for x86_64-unknown-linux-gnu (distributed make
load balancing by Grid Engine
)
Copyright (C) 2010  Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Reading makefiles...
Makefile:2: bar.mk: No such file or directory
Updating makefiles....
  File `bar.mk' does not exist.
 Must remake target `bar.mk'.
Invoking recipe from Makefile:8 to update target `bar.mk'.
echo "bar: bar.foo" > bar.mk
dynamic mode
qmake: *** No rule to make target `bar'.  Stop.
 Successfully remade target file `bar.mk'.
Updating goal targets....
 File `bar' does not exist.
Must remake target `bar'.

It looks like a qsh job is spawned to generate bar.mk, which finishes successfully, but then qmake just keeps going instead of re-running, so it doesn't actually load the newly generated bar.mk. Is there a trick to this?

Thanks!

--
Andrew Joplin


Attachment: smime.p7s
Description: S/MIME Cryptographic Signature

_______________________________________________
users mailing list
[email protected]
https://gridengine.org/mailman/listinfo/users

Reply via email to