2016-10-19 2 views
1

Скажем, $TESTOBJDIR - это каталог, который я только что создал, чтобы поместить мой двоичный файл, который я буду создавать.Как расширить правило шаблона в make-файле?

$TESTDIR - это каталог, который содержит file1.cpp и file2.cpp.

Чтобы скомпилировать *.cpp Мне нужен другой файл cpp, который находится в другом каталоге, позволяет называть его $SRCDIR. Итак, ниже правила, которое я мог сделать только

$(TESTOBJDIR)% : $(TESTDIR)%.cpp 
    $(CC) $< -o [email protected] 

, который дает мне:

g++ file1.cpp -o file1 
g++ file2.cpp -o file2 

Но то, что я хотел

g++ dir/need1.cpp file1.cpp -o file1 
g++ dir/need2.cpp file2.cpp -o file2 

Есть ли способ в шаблонного правила, которые позволили бы мне включить файл .cpp dir таким образом.

ответ

2

Образец, который я вижу в вашей цели, состоит в том, что file<x> зависит от dir/need<x> .cpp и file<x>.cpp.

Следующее правило шаблона должно работать.

(TESTOBJDIR)file% : (TESTDIR)file%.cpp dir/need%.cpp 
    $(CC) $^ -o [email protected] 
+0

Когда я что рецепт сейчас (г ++ ..) даже не называют:/ – pokche

+0

@pokche, я не могу диагностировать проблемы на вашем компьютере. Я тестировал его на своем, и он работает. –

+0

@R Sahu Когда я жестко кодирую его, выполняя dir/need1.cpp, он работает, но по мере того, как я помещаю шаблон% for, он перестает работать. У вас есть какой-либо другой онлайн-ресурс, на котором вы можете указать, где он работал. Потому что я поискать онлайн и не можете найти какой-либо ресурс относительно этого – pokche

Смежные вопросы