我有一個C/C++混合項目,對於每個源代碼,我想從程序集生成一個程序集文件(.S
),然後生成一個目標文件(.o
)。我想下面的Makefile應該工作:Makefile中的多次跳轉
all: a.o b.o main.o
g++ $^ -o main
%.o: %.S
gcc -o [email protected] $<
%.S: %.c
gcc -S -o [email protected] $<
%.S: %.cc
g++ -S -o [email protected] $<
clean:
rm -rf *.o main
理想的情況下,爲了產生X.o
,X.S
需要通過使用視X.c
或X.cpp
是否可用規則之一生成。
但是,make
顯然不按我想象的方式工作。它訴諸於X.o
默認規則既不%.S: %.c
也不%.S: %.cpp
應用... make -n
給
cc -c -o a.o a.c
g++ -c -o b.o b.cc
g++ -c -o main.o main.cc
g++ a.o b.o main.o -o main
下面的代碼示例可以重現此:
// a.c
int a() { return 0;}
// b.cc
int b() { return 0;}
// main.cc
extern "C" int a();
extern int b();
int main() { a(); b(); return 0; }
我必須有一個如何一些誤解目標得到解決。任何想法?
有趣:HTTP://stackoverflow.com/questions/39572468/how-can-i-automatically-add-s-to-a-target-in-my-makefile –
@LogicStuff:沒有我的道歉。這確實是一個錯字。但問題依然存在。 – qweruiop
這已被多次詢問。看到我的答案[這裏](http://stackoverflow.com/a/39625452/6644919)(用'.c'和'.cc'代替'.h')。 –