Makefile: split compilation and linkage
authorAntonio Ospite <ao2@ao2.it>
Thu, 22 Oct 2015 08:42:01 +0000 (10:42 +0200)
committerAntonio Ospite <ao2@ao2.it>
Thu, 22 Oct 2015 08:56:21 +0000 (10:56 +0200)
This fixes an error when compiling with clang++:

  clang: error: cannot specify -o when generating multiple output files
  <builtin>: recipe for target 'opencv_trail_effect' failed
  make: *** [opencv_trail_effect] Error 1

The error happens because in this Makefile header files are in the
target dependencies, so they are added to the compilation command, but
clang does not support that when compiling and linking in the same
command.

Also take care of using LIKN.cpp to link the program, as it is a C++
program.

.gitignore
Makefile

index 75be08c..829d7b7 100644 (file)
@@ -1 +1,2 @@
+*.o
 opencv_trail_effect
index de166de..a008ba9 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -28,8 +28,10 @@ CXXFLAGS += -fno-common \
 CXXFLAGS += $(shell pkg-config --cflags opencv)
 LDLIBS += $(shell pkg-config --libs opencv)
 
-opencv_trail_effect: $(wildcard *.hpp)
+LINK.o = $(LINK.cpp)
+opencv_trail_effect:
 
+opencv_trail_effect.o: $(wildcard *.hpp)
 
 # Some command lines to imitate different trail styles
 
@@ -46,7 +48,7 @@ average: opencv_trail_effect
        ./opencv_trail_effect -l 10 -s background -d average -B
 
 clean:
-       rm -f opencv_trail_effect vgdump gtk.suppression
+       rm -f *.o opencv_trail_effect vgdump gtk.suppression
 
 test: opencv_trail_effect
        [ -f gtk.suppression ] || wget -nv https://people.gnome.org/~johan/gtk.suppression