日期:2014-05-16  浏览次数:20681 次

问个Makefile引用开源库文件的问题。。
现有开源代码:Test
该代码所在文件夹位置:不在/usr等系统目录下,假设在d:/Test目录下
Test目录下假设有N个文件夹,比如:文件夹1,2,3,4,5等,每个文件夹下面都有多个头文件和CPP文件,在这个开源项目中,文件间互相引用的方式都是系统文件的引用方式,如:#include <xxx.h>,并不是#include "xxx.h"


好了,,现在我来使用这个开源代码

首先,我新建了一个工程,假设在E盘的T1路径下,然后创建一个T1.cpp文件,如下:
C/C++ code

#include <Test/1/1.h>  //引用Test主目录下的子文件夹1下面的1.h


int main(void)
{
    return 0;

}




好了,然后我在与该.cpp同目录下写个Makefile,如下:

VPATH = d/Test/
objects = T1.o


test : $(objects)
g++ -g -o T1 $(objects) 


.PHONY : clean
clean :
-rm edit $(objects)



然后make

结果提示找不到那个文件。。

我想我肯定是makefile写的有问题,如何把d:/Test这个非系统目录给包含进来????这个makefile到底该怎么写??我找了太多的资料我始终不知道该怎么写,求教

------解决方案--------------------
#include <1.h>

int main(void)
{
return 0;

}

然后你的makefile当中,
INCLUDE_PATH += d:\test\1

test : $(objects)
g++ -g -o T1 $(objects) -I$(INCLUDE_PATH)
$(objects): T1.cpp
$(CXX) -I$(INCLUDE_PATH) -c -o $@ $<

------解决方案--------------------
探讨

#include <1.h>

int main(void)
{
return 0;

}

然后你的makefile当中,
INCLUDE_PATH += d:\test\1

test : $(objects)
g++ -g -o T1 $(objects) -I$(INCLUDE_PATH)
$(objects): T1.cpp
$(CX……

------解决方案--------------------
vpath 不是为#include 而存在的。
只能在 编译时 加-Ixxpath才可以的,比如2楼的。

如果你的头不在标准库头位置,必须一个个指定。



------解决方案--------------------
d/是什么意思?乱搞


-Id:/

中间没空格
------解决方案--------------------
C/C++ code

VPATH = d/Test/ #是d:/Test/吧,你在windows下编译?
objects = T1.o


#add blow line
CFLAGS += -I /your-path
CFLAGS += -g

test : $(objects)
#g++ -g -o T1 $(objects) 


.PHONY : clean
clean :
-rm edit $(objects)