2013-02-19 4 views
0

Пытается скомпилировать все файлы .cc в папке P18298_ca.sub в .exe файлы в P18298_ca.cmp. Я компилирую с помощью команды make из каталога, содержащего как исходные, так и целевые каталоги. Сделайте ошибку:Компиляция файлов cpp в один каталог в другой каталог

изготовитель: * Нет правила делать цель P18298_ca.cmp/00a5bffb6a4792d7bcaed90ff6d3ca88-WA.exe', needed by main.exe '. Стоп.

Вот код Makefile, который я использовал

CPP_FILES := $(wildcard P18298_ca.sub/*.cc) 
    OBJ_FILES := $(patsubst P18298_ca.sub/%.cc,P18298_ca.cmp/%.exe,$(CPP_FILES)) 
    LD_FLAGS := ... 
    CC_FLAGS := ... 

    main.exe: $(OBJ_FILES) 
     g++ $(LD_FLAGS) -o [email protected] $^ 

    obj/%.exe: src/%.cc 
     g++ $(CC_FLAGS) -c -o [email protected] $< 

ответ

0

построен двоичный из *.obj файлов, а не из *.exe файлов. Кроме того, каталоги в макросах и правила по умолчанию должны быть одинаковыми. Измените эти строки в файле Makefile на

OBJ_FILES := $(patsubst P18298_ca.sub/%.cc,P18298_ca.cmp/%.obj,$(CPP_FILES)) 

P18298_ca.cmp/%.obj: P18298_ca.sub/%.cc 
    g++ $(CC_FLAGS) -c -o [email protected] $< 
Смежные вопросы