Я работаю над написанием своего первого файла makefile и после нескольких уроков и чтения некоторых ссылок на stackoverflow мне удалось записать файл, что я делаю этоGNU make issue: «Нет правила для создания цели« pjsip.h », необходимого« main.o »
- используя .а файлы из pjsip апи, обратите внимание на переменные PJSIP, PJLIB_UTIL и PJLIB
- определить путь к .h файл, используя - I, см. Переменные PJSIP_HDR, PJLIB_HDR и PJLIB_U_HDR
Я получаю следующее сообщение об ошибке:
make: ***No rule to make target `pjsip.h', needed by `main.o'. Stop.
Это считают, что это полезно упомянуть, что у меня есть только 4 директив #includes в моем .cpp файл
#include <iostream>
#include <pjsip.h>
#include <pjlib-util.h>
#include <pjlib.h>
Цель состоит в том, чтобы иметь файл main который можно исправить, я использую Ubuntu 14.04. Вот мой Makefile
CC = g++
DEBUG = -g
CFLAGS = -Wall -c $(DEBUG)
LFLAGS = -Wall $(DEBUG)
PJSIP = -L/home/ubuntu/pjsip/trunk/pjsip/lib -llibpjsip-simple-x86_64-unknown-linux-gnu.a -llibpjsip-ua-x86_64-unknown-linux-gnu.a -llibpjsip-x86_64-unknown-linux-gnu.a -llibpjsua2-x86_64-unknown-linux-gnu.a -llibpjsua-x86_64-unknown-linux-gnu.a
PJLIB = -L/home/ubuntu/pjsip/trunk/pjlib/lib -llibpj-x86_64-unknown-linux-gnu.a
PJLIB_UTIL = -L/home/ubuntu/pjsip/trunk/pjlib-utils/lib -llibpjlib-util-x86_64-unknown-linux-gnu.a
PJSIP_HDR = -I/home/ubuntu/pjsip/trunk/pjsip/include/
PJLIB_HDR = -I/home/ubuntu/pjsip/trunk/pjlib/include/
PJLIB_U_HDR = -I/home/ubuntu/pjsip/trunk/pjlib-utils/include
main: main.o
$(CC) $(LFLAGS) main.o -o main
main.o: main.cpp pjsip.h pjlib.h pjlib-utils.h
$(CC) $(CFLAGS) $(PJSIP_HDR) $(PJLIB_HDR) $(PJLIB_U_HDR) main.cpp $(PJSIP) $(PJLIB) $(PJLIB_UTIL)
clean:
\rm -f *.o
Любые дополнительные комментарии, которые могут помочь мне улучшить мой Makefile Приветствуются
Заранее спасибо
Сначала попробуйте написать командную строку, прежде чем приступать к созданию Makefile. –
I jusd сделал, как вы рекомендуете, когда я это сделаю, я получаю вывод, который заставляет меня поверить, что я ошибаюсь в связи .a и включая файлы .h. это часть вывода: main.cpp :(. text + 0x1da): undefined ссылка на 'pj_init ' main.cpp :(. text + 0x233): неопределенная ссылка на' pjlib_util_init' main.cpp :(. text + 0x27f): неопределенная ссылка на 'pj_pool_factory_default_policy ' –
В этом случае файл cpp не является проблемой: make сообщает вам, что он не может найти необходимый файл для рецепта. Я считаю странным, что вы делаете «PJSIP_HDR = -I/home/ubuntu/pjsip/trunk/pjsip/include/pjsip.h», а затем используйте его с директивой -I ... Вы пытались удалить имя файла из определения? , Когда вы используете -I вы должны использовать include paths, правильно ?. –