当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 3 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : 关于automake工具的使用:使用了第三方的库和头文件,怎样写makefile.am文件
帖子发表于 : 2010-09-09 21:56 

注册: 2010-08-25 20:36
帖子: 12
送出感谢: 0 次
接收感谢: 0 次
开发一个C++程序,手写Makefile文件太麻烦了,想要使用automake工具;

使用了第三方的的库(.a文件)和一些头文件,如下面的目录结构:

库的头文件放在:/home/me/projectA/include/pro 下(pro下是很多的.h头文件,其中包括一个最关键的头文件dataM.h)
库文件放在: /home/me/projectA/lib 下(lib下是一些.a文件,其中包括要用到的一个文件libdataM.a)


我的Makefile.am文件如下:
----------------------------------------------------------------------------
AUTOMAKE_OPTIONS=foreign
bin_PROGRAMS=hpMain

INCLUDES= -I/home/me/projectA/include/pro #库的头文件dataM.h的路径
AM_LDFLAGS= -lpthread -L/home/me/projectA/lib #库的libdataM.a文件所在的路径

hpMain_SOURCES = ……(自己工程里的.h文件和.cpp,略去)

----------------------------------------------------------------------------

说明:在我的程序中使用#include <pro/dataM.h>将头文件包含进来


automake --add-missing // 运行正常
./configure // 运行正常
make // 报了‘pro/dataM.h’:No such file or directory,然后就是一系列的有关dataM.h中定义过的类和函数:was not declared in this scope,也就是说头文件和库的路径设置有问题,导致了没有包含进来第三方的库


我用 hpMain_LDADD = -lpthread /home/me/projectA/lib/libdataM.a 来替换 AM_LDFLAGS= -lpthread -L/home/me/projectA/lib 也是同样的问题……


我的问题是:在这种情况下怎样设置头文件和库文件的路径,也就是怎样写Makefile.am文件?在网上找了很久也没找到解决方法。 多谢了。


页首
 用户资料  
 
2 楼 
 文章标题 : Re: 关于automake工具的使用:使用了第三方的库和头文件,怎样写makefile.am文件
帖子发表于 : 2010-09-09 22:52 
头像

注册: 2008-04-07 17:36
帖子: 4010
地址: 泰安人在阜新
送出感谢: 0 次
接收感谢: 0 次
既然要这样 #include <pro/dataM.h> 用

就要这样写
INCLUDES= -I/home/me/projectA/include/

上边和下边,这两个,只能有一个带 pro

因为 #include 中,就是相对于 -I 的 相对路径

两个地方都带了 pro,当然就找不到了


_________________
宇宙数学物理 sssssssss Ubuntu 桌面培训 sssssssss 问打包的问题之前先看
和我一样的新手请看,我看过了,腰不酸了,腿不疼了,上楼也有劲了
想去IRC的点这里——一个比QQ群好N多的东西


页首
 用户资料  
 
3 楼 
 文章标题 : Re: 关于automake工具的使用:使用了第三方的库和头文件,怎样写makefile.am文件
帖子发表于 : 2010-09-10 0:53 

注册: 2010-08-25 20:36
帖子: 12
送出感谢: 0 次
接收感谢: 0 次
wzssyqa 写道:
既然要这样 #include <pro/dataM.h> 用

就要这样写
INCLUDES= -I/home/me/projectA/include/

上边和下边,这两个,只能有一个带 pro

因为 #include 中,就是相对于 -I 的 相对路径

两个地方都带了 pro,当然就找不到了


嗯 谢谢 就是犯了这个错误;
引用库文件(.a文件)在我在上面的Makefile.am中写的那个不行,会报很多的“undefined reference to ”函数,当然是调用的库里面的函数。
虽然改成了hpMain_LDADD = -lpthread /home/me/projectA/lib/libdataM.a 就可以了,但是不是很清楚原因……


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 3 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:Bing [Bot] 和 2 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译