makefile 运行出错,请指导

yyang0514 2012-01-18 10:49:12
应该是文件包含的方法除了问题,请问应该怎么写
makefile文件名称为makefile,运行后提示:
make: *** No rule to make target `main.cpp', needed by `main.o'. Stop.
将文件放在/usr/src/code下面,其中包含:
include
------- file.h
src
-------man.cpp(#include "file.h",file.cpp(#include "file.h",
nakefile为
object = main.o file.o
inlcude = -I“/usr/src/code/maketest/include/*.h"
src = -I”/usr/src/code/maketest/src/*.cpp"
execute(object)
g++ -o execute $(object)
main.o:main.cpp
g++ -c (inlcude) $(src) main.cpp $
file.o:file.cpp file.h
g++ -c $(inlcude) $(src) file.cpp
#clean:
#rm execute $(object)

请问是出了什么问题,请指导,谢谢!!!
...全文
111 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
yixilan 2012-01-19
  • 打赏
  • 举报
回复
试试这个:
inlcude = -I"/usr/src/code/maketest/include/*.h"
src = -I"/usr/src/code/maketest/src/*.cpp"
COMPILE=g++ $(inlcude) $(src) -c
MAKEEXE=g++
EXE=execname
object = main.o file.o

all: $(EXE)

$(EXE): $(object)
$(MAKEEXE) $(object) -o $(EXE)
main.o: main.cpp
$(COMPILE) main.cpp
file.o: file.h file.cpp
$(COMPILE) file.cpp
clean:
rm -f *.o core $(EXE) $(object)
yyang0514 2012-01-19
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 dengxiayehu 的回复:]
试试这个

Python code


INCLUDE=-I"./include/"
CC=g++
COMPILE=$(CC) $(INCLUDE)
OBJS=main.o file.o
main : main.o file.o
file.o: ./src/file.cpp
$(COMPILE) ./src/file.cpp -c
main.o: ./src/mai……
[/Quote]
非常感谢你的帮助。提供的makefile是可以的运行的,我的想法是能否只通过INCLUDE这个变量来减少在后面重复标准文件的路径。
如file.o: ./src/file.cpp
$(COMPILE) ./src/file.cpp -c
变为:
file.o: file.cpp
$(COMPILE) file.cpp -c
就能正常运行。
_了凡_ 2012-01-19
  • 打赏
  • 举报
回复
试试这个

INCLUDE=-I"./include/"
CC=g++
COMPILE=$(CC) $(INCLUDE)
OBJS=main.o file.o
main : main.o file.o
file.o: ./src/file.cpp
$(COMPILE) ./src/file.cpp -c
main.o: ./src/main.cpp
$(COMPILE) ./src/main.cpp -c

文件位置关系('o'为空格):
.
|-- include
|ooo`-- file.h
|-- Makefile
`-- src
oooo|-- file.cpp
oooo`-- main.cpp
yyang0514 2012-01-19
  • 打赏
  • 举报
回复
我的想法就是在程序文件中就只写为
#include "file.h"
yyang0514 2012-01-19
  • 打赏
  • 举报
回复
加入不对文件地址进行标注,就提示找不到main.cpp

应为:
假如不对文件地址进行标注,就提示找不到main.cpp

yyang0514 2012-01-19
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 yixilan 的回复:]
试试这个:
inlcude = -I"/usr/src/code/maketest/include/*.h"
src = -I"/usr/src/code/maketest/src/*.cpp"
COMPILE=g++ $(inlcude) $(src) -c
MAKEEXE=g++
EXE=execname
object = main.o file.o

all: $(EXE)
……
[/Quote]
非常感谢你的回复,但是还是不行。我找我同事进行了修改:
1.修改src路径下cpp文件的包含关系为:
#include "../include/file.h"
2.在makefile中,对每个文件的出处进行地址标注,感觉上include的包含没有用处。
如:main.o: src/main.cpp include/file.h
$(COMPILE) -o main.o src/main.cpp
加入不对文件地址进行标注,就提示找不到main.cpp


请问有没有能否对1和2两个问题进行优化呢。暂时不要用$@ $<两种,还不大懂。


//include目录下的文件:
#ifndef _FILE_H
#define _FILE_H
#include <stdio.h>
void PrintStr(char* src);
void PrintNum(int src);
#endif
//src目录下的文件
//file.cpp
#include "file.h"
//#include "file.h"
void PrintStr(char* src)
{
printf("str = %s\n",src);
}
void PrintNum(int src)
{
printf("num = %d\n",src);
}
//main.cpp
#include "file.h"
int main()
{
int num = 321;
char* str = "hello world!";
PrintStr(str);
PrintNum(num);
return 0;
}

23,116

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧