当前位置: 技术问答>linux和unix
问个Makefile引用开源库文件的问题。。
来源: 互联网 发布时间:2017-03-10
本文导语: 现有开源代码:Test 该代码所在文件夹位置:不在/usr等系统目录下,假设在d:/Test目录下 Test目录下假设有N个文件夹,比如:文件夹1,2,3,4,5等,每个文件夹下面都有多个头文件和CPP文件,在这个开源项目中,文件...
现有开源代码:Test
该代码所在文件夹位置:不在/usr等系统目录下,假设在d:/Test目录下
Test目录下假设有N个文件夹,比如:文件夹1,2,3,4,5等,每个文件夹下面都有多个头文件和CPP文件,在这个开源项目中,文件间互相引用的方式都是系统文件的引用方式,如:#include ,并不是#include "xxx.h"
好了,,现在我来使用这个开源代码
首先,我新建了一个工程,假设在E盘的T1路径下,然后创建一个T1.cpp文件,如下:
好了,然后我在与该.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到底该怎么写??我找了太多的资料我始终不知道该怎么写,求教
该代码所在文件夹位置:不在/usr等系统目录下,假设在d:/Test目录下
Test目录下假设有N个文件夹,比如:文件夹1,2,3,4,5等,每个文件夹下面都有多个头文件和CPP文件,在这个开源项目中,文件间互相引用的方式都是系统文件的引用方式,如:#include ,并不是#include "xxx.h"
好了,,现在我来使用这个开源代码
首先,我新建了一个工程,假设在E盘的T1路径下,然后创建一个T1.cpp文件,如下:
#include //引用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到底该怎么写??我找了太多的资料我始终不知道该怎么写,求教
|
vpath 不是为#include 而存在的。
只能在 编译时 加-Ixxpath才可以的,比如2楼的。
如果你的头不在标准库头位置,必须一个个指定。
只能在 编译时 加-Ixxpath才可以的,比如2楼的。
如果你的头不在标准库头位置,必须一个个指定。
|
#include
int main(void)
{
return 0;
}
然后你的makefile当中,
INCLUDE_PATH += d:test1
test : $(objects)
g++ -g -o T1 $(objects) -I$(INCLUDE_PATH)
$(objects): T1.cpp
$(CXX) -I$(INCLUDE_PATH) -c -o $@ $
int main(void)
{
return 0;
}
然后你的makefile当中,
INCLUDE_PATH += d:test1
test : $(objects)
g++ -g -o T1 $(objects) -I$(INCLUDE_PATH)
$(objects): T1.cpp
$(CXX) -I$(INCLUDE_PATH) -c -o $@ $