makefileでコピーしてからコンパイルする方法
諸事情あって、C言語のコンパイルするファイルを(vpathで指定せずに)カレントディレクトリにコピーしてから、コンパイルを実行したいと思っています。
以下のように、compile_pre でコピー、compile_main でgcc を起動しているのですが、main.oがコンパイルできない旨、エラーで終了してしまいます。
これはどうしてなのでしょうか?
(compile_pre → comple_main の順番には実行しないのでしょうか?)
また、このようなことをしたいばあい、何か良い方法はありませんでしょうか。
-----------------------------------------------
# (src/main.c から main.o を生成して、main.exe を生成する)
TARGET = main.exe
TARGET_OBJS = main.o
#TARGET_OBJS += sub.o ...
.PHONY: compile compile_pre compile_main
compile: compile_pre compile_main
compile_pre:
cp -fp ./src/main.c .;
compile_main: $(TARGET)
$(TARGET): $(TARGET_OBJS)
gcc -o $(TARGET) $(TARGET_OBJS)
%.o : %.c
gcc -c -o $@ $<
-----------------------------------------------
UNIX%> make compile --dry-run --debug
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 i686-pc-linux-gnu
Reading makefiles...
Updating goal targets....
File `compile' does not exist.
File `compile_pre' does not exist.
Must remake target `compile_pre'.
cp -fp ./src/main.c .;
Successfully remade target file `compile_pre'.
File `compile_main' does not exist.
File `main.exe' does not exist.
File `main.o' does not exist.
Must remake target `main.o'.
make: *** No rule to make target `main.o', needed by `main.exe'. Stop.
宜しくお願い致します。
補足
すみません、具体的にどうすればいいのでしょうか? 素人なもので、専門用語とかよくわからないのですが・・・。