C Gnu makefile 我不能用 ar 创建一个静态库

C Gnu makefile I cannot make a static library with ar

当我尝试这个时;

VPATH= ./src
CXXFLAGS=   -I  "./include"
program: ListNode.o LinkedList.o TreeNode.o Tree.o Test.o
    g++ lib\ListNode.o  lib\LinkedList.o    lib\TreeNode.o  lib\Tree.o  lib\Test.o  -o  bin\program
ListNode.o: ListNode.cpp
    g++ -c  $(CXXFLAGS) $<  -o  lib\ListNode.o
LinkedList.o: LinkedList.cpp
    g++ -c  $(CXXFLAGS) $<  -o  lib\LinkedList.o
TreeNode.o: TreeNode.cpp
    g++ -c  $(CXXFLAGS) $<  -o  lib\TreeNode.o
Tree.o: Tree.cpp
    g++ -c  $(CXXFLAGS) $<  -o  lib\Tree.o
Test.o: Test.cpp
    g++ -c  $(CXXFLAGS) $<  -o  lib\Test.o
clean:
    del *.exe
    del *.o

一切正常,我的作业没有任何 problem.But 当我将此命令添加到 makefile 时,我必须创建一个静态 library.Anyway;

VPATH= ./src
CXXFLAGS=   -I  "./include"
program: ListNode.o LinkedList.o TreeNode.o Tree.o Test.o
    g++ lib\ListNode.o  lib\LinkedList.o    lib\TreeNode.o  lib\Tree.o  lib\Test.o  -o  bin\program
ListNode.o: ListNode.cpp
    g++ -c  $(CXXFLAGS) $<  -o  lib\ListNode.o
LinkedList.o: LinkedList.cpp
    g++ -c  $(CXXFLAGS) $<  -o  lib\LinkedList.o
TreeNode.o: TreeNode.cpp
    g++ -c  $(CXXFLAGS) $<  -o  lib\TreeNode.o
Tree.o: Tree.cpp
    g++ -c  $(CXXFLAGS) $<  -o  lib\Tree.o
Test.o: Test.cpp
    g++ -c  $(CXXFLAGS) $<  -o  lib\Test.o
clean:
    del *.exe
    del *.o
libclass.a: ListNode.o  LinkedList.o
    ar -rcs libclass.a lib\ListNode.o lib\LinkedList.o

没有 anything.There 没有文件或没有 error.Its 就像它不存在一样:/

顺便说一下,如果我先使用 makefile 然后将此代码放在终端上,我认为最好提一下;

ar -rcs libclass.a lib\*.o

它就像魔法一样有效,我的意思是 perfectly.So 我需要一点帮助,因为我即将离开 insane.Any 将不胜感激。

添加:

all: program libclass.a

到您的 makefile 的开头。默认情况下,make 只构建它在您的 makefile 中找到的第一个目标。这声明了一个名为 "all" 的假目标,它依赖于 "program" 和 "libclass.a",因此 make 最终构建了两者。