gpt4 book ai didi

c++ - 在 makefile 中使用的英特尔编译器目录的快捷方式

转载 作者:太空宇宙 更新时间:2023-11-04 14:17:45 25 4
gpt4 key购买 nike

我使用适用于 Windows 的英特尔 C++ 编译器(来自英特尔 Composer 2011)编译我的程序,并收到一条错误消息,指出找不到 libmmdd.lib。我在谷歌上搜索了这个问题,有人说我必须重新安装我的编译器,我做到了;然而,这并没有解决问题,所以我开始查看 intel 编译器目录,发现这个文件(以及其他所需的库)位于

%CompilerDirectory%\compiler\lib\ia32

在make文件中写入所有库的绝对路径是没有意义的,所以我开始搜索,我只能找到%mklroot% 指向数学内核目录。即使使用 -L%mklroot%/../compiler/lib/ia32 链接方法,我也无法正确链接到库,所以最终我做了一个蹩脚的举动来解决问题,也就是说,我复制了每个文件链接器请求到源目录,所以问题暂时解决了。

由于这种解决问题的方法不是最好的方法,我想知道是否有一种方法可以链接到这些库而无需复制文件。这很奇怪,因为编译器应该单独找到它自己的库,但是......我不知道......!

有什么想法吗?是否有类似 %compilerroot% 的东西,它指向编译器目录,我可以将其放入我的 makefile(或者实际上是我的 qmake,因为我使用的是 Qt)。

感谢您的努力:-)

最佳答案

不要使用 %mklroot% 尝试 $$(mklroot)$(mklroot)

你可以找到解释here :

Variables can be used to store the contents of environment variables. These can be evaluated at the time that qmake is run, or included in the generated Makefile for evaluation when the project is built.

To obtain the contents of an environment value when qmakeis run, use the $$(...) operator:

DESTDIR = $$(PWD)
message(The project will be installed in $$DESTDIR)

In the above assignment, the value of the PWD environment variable is read when the project file is processed.

To obtain the contents of an environment value at the time when the generated Makefile is processed, use the $(...) operator:

DESTDIR = $$(PWD)
message(The project will be installed in $$DESTDIR)

DESTDIR = $(PWD)
message(The project will be installed in the value of PWD)
message(when the Makefile is processed.)

In the above assignment, the value of PWD is read immediately when the project file is processed, but $(PWD) is assigned to DESTDIR in the generated Makefile. This makes the build process more flexible as long as the environment variable is set correctly when the Makefile is processed.

编辑:
奇怪的是 $$(mklroot) 和 $(mklroot) 都没有给您预期的结果。我做了一个简单的测试来验证我上面写的:

  1. 打开命令提示符
  2. 创建了一个带有测试值的新环境变量“mklroot”:set mklroot=C:\intel_libs
  3. 验证了前面步骤的结果:echo %mklroot%。我有 C:\intel_libs
  4. 将您的 3 个 qmake 函数放在我的 .pro 文件的末尾:
    警告($(%MKLROOT%))
    警告($(MKLROOT))
    警告($$(MKLROOT))
  5. 运行 qmake:qmake。结果:
    项目警告:
    项目警告:c:\intel_libs
    项目警告:c:\intel_libs

如您所见,第二个和第三个 warning() 显示了我设置为环境变量的字符串。

关于c++ - 在 makefile 中使用的英特尔编译器目录的快捷方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9894800/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com