Qt中pro文件从相对路径导入库
2017-02-16 20:00
288 查看
Qt中pro文件从相对路径导入库
Qt工程中有lib、dll、a、so等文件需要导入时,有时需要指定路径。指定绝对路径换到其他机器编译时会不大方便。那么,如何在Qt pro文件中通过相对路径导入库呢。动静不同
动态库添加方式与静态库添加方式是不同的。实际使用过程中需要加以区别。
动态库添加代码
LIBS += -L ./ \ -L ./libpath/ \ -L $$PWD/libpath/path/ \ -l mylib \ -l mylib2 LIBS+= "d:/program files/mylib3.a" LIBS+= "$$PWD/path/to/lib/mylib4.a" LIBS+= "./path/to/lib/mylib5.a"
以上语法在Qt5.9中全部可行。
在Qt5.2中,第3行方式($$PWD)编译会报错,说是无权访问文件夹。
静态库添加代码
LIBS += mylib.a \ ./path/mylib2.a LIBS+= "d:/program files/mylib3.a" LIBS+= "$$PWD/path/to/lib/mylib4.a" LIBS+= "./path/to/lib/mylib5.a"
看出来了吧,静态库添加时不要加-l前缀。或者直接用双引号以文件的方式加载。静态库必须写全路径。所有-L添加的路径都只针对动态库有效。
含义:
上面的代码表示将当前路径、./libpath、./libpath/path/ 目录加入库文件搜索目录中,并向工程添加mylib、mylib2、mylib3、mylib4、mylib5 这几个库文件。路径中有空格时,用双引号括起来。加上库的后缀使用全名。不要先导符号-l或者-L。
语法解析
-L表示后面跟的是一个文件夹,工程会将这个目录加入库文件搜索路径中。-l表示后面跟的是一个库文件的名字。不论后缀是.lib、.dll、.so、.a,都不需要加上后缀名,直接用库的点分号前面部分名字即可。
“” 用于含空格的路径,由于可能含空格,所以引号的模式不能加任何-l或者-L前缀,只能是库文件全部路径,也即一定要带上后缀。为啥呢?个人感觉是避免make文件意外注入。。。意外被空格分隔成多条命令。。。。引号内可以使用变量,$$PWD之类的,也可以用“.”号。
注意事项
如果是在Qt中F5来Debug运行,确保库文件在Debug目录下对应的目录中。如果已经编译过,直接从exe打开文件进行执行,只要库文件在exe相同目录下即可。
在库文件名字前面不要加任何路径。因为不加路径,工程会自动从所有包含路径中去查找,而如果包含了路径,那就会从指定路径下去寻找(万一在某个包含的路径中有库文件但自己手欠写成另外一个不包含库文件的目录)。显然不加路径限定更加灵活。
注意$$PWD与.的区别。$$PWD直接取出了代码所在目录,所以是固定的。当使用.号时,makefile文件中解析后还是一个.号,所以构建时代表与makefile同一目录。
本人测试环境:
参考说明
http://www.ithao123.cn/content-4528049.html相关文章推荐
- Qt中pro文件从相对路径导入库
- Qt在pro文件中加入带空格的路径
- Qt在pro文件中加入带空格的路径(使用$$quote关键字)
- Qt之OpenSSL(有pro文件的路径格式,以及对libeay32和ssleay32的引用)
- 网站页面导入css,图片等文件的相对路径和绝对路径问题
- QT的pro文件编写,高效简洁,,路径设置 有空格 引入系统环境变量等
- js相对路径相关(比如:js中的路径依赖导入该js文件的路径)
- QT pro 添加带空格的路径以及添加库文件的正确方法
- QT中.pro文件的写法
- 相对路径获取JAVA配置文件Class.getResourceAsStream() & ClassLoader的getResourceAsStream()
- v在JAVA文件中获取该项目的相对路径
- 得到Js文件的绝对路径或相对路径的两法
- LyNews『凌云新闻』 - 在JAVA文件中获取该项目的相对路径
- 在JAVA文件中获取该项目的相对路径
- 如何找到配置文件的相对路径
- 在JAVA文件中获取该项目的相对路径
- 在JAVA文件中获取该项目的相对路径
- log4j中配置日志文件相对路径方法分析
- 转帖--在JAVA文件中获取该项目的相对路径
- 在JAVA文件中获取该项目的相对路径