2016-04-09 33 views
0

ile statik kütüphane oluşturamıyorum Bunu denediğimde;C Gnu makefile

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 

O ben makefile için bu komutu eklerken statik library.Anyway oluşturmak zorunda ödevime herhangi problem.But olmadan tüm eserler;

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 
O anything.There hiçbir dosya ya bunun gibi error.Its yok olduğunu yapmaz

:/

Ben bahsetmek iyi olacağını düşünüyorum arada ilk makefile kullanırsam ve sonra bu kodu terminale koyarsam;

ar -rcs libclass.a lib\*.o 

Ben mutluluk duyacağız insane.Any yardım gitmek üzereyim çünkü ben biraz yardıma ihtiyacım i perfectly.So demek büyü gibi çalışır.

+1

Nasıl yapmaya çalışıyorsunuz? Yapım biraz paslı olabilir, fakat 'program' lib'inize bağlı olmadığı için, 'make make' programının onu oluşturmasına gerek yoktur. – melak47

+1

Yan nota: [Makefiles Kuralları] 'nın 2 ve 4. kurallarını ihlal ediyorsunuz (http://make.mad-scientist.net/papers/rules-of-makefiles/), tüm kurallarınız her defasında yayınlanacak Bu, amacı tamamen bozar. – user657267

+0

Evet, lib.'ye bağlı değil. Bunu yapmak istemedim çünkü makefile'de bir komut çalıştırmaya çalışıyordum.Ama sonunda #program: libclass.a Test.o # gibi bir şey olacak . - @ melak47 – user54539

cevap

1

Ekleme: makefile başlangıcına

all: program libclass.a 

. Varsayılan olarak, make makefile yalnızca bulduğu ilk hedefi oluşturur. Bu, "program" ve "libclass.a" ye bağlı "all" adlı sahte bir hedefi bildirir, böylece make her ikisini de oluşturmaya son verir.