qt - 如何在项目文件中使用环境变量的值?
问题描述
我正在尝试将自制库添加到另一个项目。
根据我现在找不到的另一个答案中的建议,我在 mkspecs/features 中创建了 xyz.prf 并添加了
config += xyz
到我的项目文件。
xyz.prf 包含
INCLUDEPATH += $XYZ_INC
DEPENDPATH += $XYZ_INC
win32:CONFIG(release, debug|release): LIBS += -L$XYZ_DIR -llibxyz
else:win32:CONFIG(debug, debug|release): LIBS += -L$XYZ_DIR -llibxyz
else:unix: LIBS += -L$XYZ_DIR -llibxyz
我在构建配置中定义了 XYZ_INC 和 XYZ_DIR 并根据需要经常运行 qmake。
但是,当我尝试构建时,链接时出现错误。
g++ -Wl,-rpath,/opt/Qt/5.12.5/gcc_64/lib -o someprogram someprogram.o -L/home/alan/work/myStuff/sqlPrettyPrinter/v3/build-SQLPPv3-Desktop_Qt_5_12_5_GCC_64bit-Debug/test/test_collationname/../../libsqlpp/ -llibsqlpp -LYZ_DIR -llibxyz /opt/Qt/5.12.5/gcc_64/lib/libQt5Test.so /opt/Qt/5.12.5/gcc_64/lib/libQt5Core.so -lpthread
/usr/bin/ld: cannot find -llibxyz
现在,查看 g++ 命令行,我明白-LYZ_DIR
了为什么ld
找不到 libxyz - 它应该是-L$XYZ_DIR
or -L<whatever XYZ_DIR expands to>
。
我已经尝试了$
or$$
和XYZ_DIR
, {XYZ_DIR}
or的所有组合(XYZ_DIR)
。没有任何工作,除了上述组合之外的所有最终都会生成“-L”(没有任何目录)。
生成我需要的正确语法是什么?
抱歉 - 这个问题的结束时间比预期的要长;但是,我想不出一种可以合理缩短它的方法。
解决方案
正如文档指出的那样,$$(...)
必须用于获取环境变量:
变量可用于存储环境变量的内容。这些可以在 qmake 运行时进行评估,或者包含在生成的 Makefile 中以在项目构建时进行评估。
要在 qmake 运行时获取环境值的内容,请使用 $$(...) 运算符:
DESTDIR = $$(PWD) message(The project will be installed in $$DESTDIR)
xyz.prf
INCLUDEPATH += $$(XYZ_INC)
DEPENDPATH += $$(XYZ_INC)
win32:CONFIG(release, debug|release): LIBS += -L$$(XYZ_DIR) -llibxyz
else:win32:CONFIG(debug, debug|release): LIBS += -L$$(XYZ_DIR) -llibxyz
else:unix: LIBS += -L$$(XYZ_DIR) -llibxyz
使用前面的代码元素,它仅在执行 qmake 时应用,但如果您希望使用 make 命令执行它,则必须$(...)
按照文档指示使用:
要在处理生成的 Makefile 时获取环境值的内容,请使用 $(...) 运算符:
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.)
xyz.prf
INCLUDEPATH += $(XYZ_INC)
DEPENDPATH += $(XYZ_INC)
win32:CONFIG(release, debug|release): LIBS += -L$(XYZ_DIR) -llibxyz
else:win32:CONFIG(debug, debug|release): LIBS += -L$(XYZ_DIR) -llibxyz
else:unix: LIBS += -L$(XYZ_DIR) -llibxyz
推荐阅读
- oracle - Oracle join 子句 where varchar2(4 byte) 导致问题
- c# - 在 winforms 和 windowsformshost 中使用 reportViewer 有区别吗
- php - 需要帮助才能获得正确的查询mysql数据库php
- powershell - Mule PowerShell 连接器 - 变量 '$
' 无法检索,因为它尚未设置 - javascript - 如何以编程方式从包含数组的表单数据构建对象
- linux - 从命令提示符更新 Python 版本并将 PyQt4 转换为 PyQt5
- java - Spring上传文件大小限制错误
- ada - Ada中的异构元组
- r - 从 R 中的通用代码生成多个图
- javascript - 如何在 InfoBubble 中调用外部点击事件 - 这里是 API Javascript 3