0

                                   projectroot/
                                         |
          +------------------------------+----------------------------+
          |                              |                            |
       include/                        libs/                     helloworld/
          |                              |                            |
     shader_utils.h                shader_utils.c                 triangle.c

プロジェクトのルート ディレクトリの下に 3 つのディレクトリがあります。helloworld ディレクトリには、shader_utils.h (projectroot/include の下) に依存する三角形が含まれています。その定義は projectroot/libs. の下にあり、ここに私の make ファイルがあります。それの何が悪い。

#!bin/sh
CC=gcc
LDLIBS=-lglut -lGLEW -lGL
ROOT=/media/programming/experiments/projectroot

VPATH=../libs:../include
INC=-I$(ROOT)/include

all: triangle
triangle: triangle.o shader_utils.o
         cc -c $(CFLAGS) $< -o $@ $(INC)
shader_utils.o: shader_utils.h
         cc -c $(CFLAGS) $< -o $@ $(INC)    
clean:
        rm -f *.o triangle
.PHONY: all clean

作ろうとすると。それはこれを伝えます

cc -c  ../include/shader_utils.h -o shader_utils.o -I/media/programming/experiments/projectroot/include 
cc -c  triangle.o -o triangle -I/media/programming/experiments/projectroot/include
cc: warning: triangle.o: linker input file unused because linking not done
4

1 に答える 1

0

このルールは意味がありません:

triangle: triangle.o shader_utils.o
         cc -c $(CFLAGS) $< -o $@ $(INC)

Makeに実行可能ファイルを作成するように指示していますが、使用するように求めています-c。すべてのルールを削除して、デフォルトをそのまま使用してください。Makefile を書き換えます。

CC=gcc
LDLIBS=-lglut -lGLEW -lGL
ROOT=/media/programming/experiments/projectroot
VPATH=../libs:../include
CFLAGS=-I$(ROOT)/include

all: triangle
triangle: triangle.o shader_utils.o
shader_utils.o: shader_utils.h 
clean:
        rm -f *.o triangle
.PHONY: all clean
于 2012-11-28T02:31:42.757 に答える