我使用适用于Windows的intel C ++编译器编译了程序(来自Intel Composer 2011),并收到一条错误消息,提示找不到libmmdd.lib。我用谷歌搜索了这个问题,有人说我必须重新安装编译器,然后我做了。但是,这并不能解决问题,因此我开始在intel编译器目录中查找,发现此文件(以及其他必需的库)位于
%CompilerDirectory%\ compiler \ lib \ ia32
在make文件中写入库的整个绝对路径没有任何意义,因此我开始搜索,但我只能发现%mklroot%指向数学内核目录。即使使用-L%mklroot%/ .. / compiler / lib / ia32进行链接的方法,我也无法正确链接至库,所以最终我还是a脚地解决了这个问题,也就是说,我复制了每个文件链接器请求到源目录,因此该问题暂时得以解决。
由于解决问题的方法不是最好的方法,所以我想知道是否存在一种无需复制文件即可链接到这些库的方法。这很奇怪,因为编译器应该单独找到自己的库,但是……我不知道……!
有任何想法吗?是否有%compilerroot%之类的东西指向编译器目录,并且我可以将其放入makefile(或实际上是我的qmake,因为我正在使用Qt)。
感谢您的付出:-)
最佳答案
代替使用%mklroot%
尝试$$(mklroot)
或$(mklroot)
。
您可以找到说明here:
变量可用于存储环境变量的内容。
这些可以在运行qmake时进行评估,或包含在其中
生成项目时生成的Makefile进行评估。
要在运行qmakeis时获取环境值的内容,请使用
$$(...)运算符:
DESTDIR = $$(PWD)
消息(该项目将安装在$$ DESTDIR中)
在上面的分配中,PWD环境变量的值为
在处理项目文件时读取。
为了获得环境值的内容,当
生成的Makefile已处理,请使用$(...)运算符:
DESTDIR = $$(PWD)
消息(该项目将安装在$$ DESTDIR中)
DESTDIR = $(PWD)
消息(该项目将以PWD的值安装)
消息(处理Makefile时。)
在上述分配中,当
项目文件已处理,但$(PWD)已分配给DESTDIR
生成的Makefile。这使得构建过程更加灵活
因为当Makefile是
处理。
编辑:
奇怪的是,$$(mklroot)和$(mklroot)都没有给您期望的结果。我做了一个简单的测试,以验证我上面写的内容:
打开命令提示符
用测试值创建了一个新的环境变量“ mklroot”:set mklroot=C:\intel_libs
验证了previos步骤的结果:echo %mklroot%
。我得到了C:\intel_libs
将您的3个qmake函数放在.pro文件的末尾:
警告($(%MKLROOT%))
警告($(MKLROOT))
警告($$(MKLROOT))
冉qmake:qmake
。结果:Project WARNING:
Project WARNING: c:\intel_libs
Project WARNING: c:\intel_libs
如您所见,第二和第三警告()显示了我设置为环境变量的字符串。